Kubernetes初始化容器问题与环境变量

问题描述

我正在尝试将init容器添加到部署中,但是由于某种原因,我无法使env vars正常工作。

仅说明一下,这就是我要尝试的:

initContainers:
    - name: init-db
      image: mysql:5.7
      env:
        - name: TEST
          value: nada
      args: ["echo","${TEST}"]

但是无论我做什么,env var都不起作用,echo总是返回${TEST}而不是nada

有任何提示吗?

解决方法

就像提到的评论和其他答案一样,您需要正确地使用shell进行ENV替换。因此,请替换行

args: ["echo","${TEST}"]中的代码用于​​ p>

command: ['sh','-c','echo ${TEST}']

Reference

,

您需要使用shell才能正确进行ENV var替换。例如:

initContainers:
    - name: init-db
      image: mysql:5.7
      env:
        - name: TEST
          value: nada
      command:
      - /bin/sh
      - -c
      - echo "${TEST}"
,

根据 Kubernetes 官方文档,command 或 args 字段中需要扩展的变量需要使用括号 $(TEST)。我在使用方括号时出错,因为 args 上的 env vars 没有正确扩展。工作示例:

initContainers:
  - name: my-container
    image: 'my-image'
    envFrom:
      - configMapRef:
          name: my-config
    args:
      - '-path=/$(MY_ENV_VAR)'

Kubernetes Documentation

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...