Kubernetes 在k8s yaml文件中,如何在容器中使用环境变量
例如,我制作了一个spark:2.4.3 docker图像,并在Dockerfile中设置了一个ENV spark_HOME 当我在yaml文件中使用Kubernetes 在k8s yaml文件中,如何在容器中使用环境变量,kubernetes,environment-variables,yaml,Kubernetes,Environment Variables,Yaml,例如,我制作了一个spark:2.4.3 docker图像,并在Dockerfile中设置了一个ENV spark_HOME 当我在yaml文件中使用SPARK\u HOME时(参见下面的代码),我得到了一个错误: ${SPARK_HOME}/sbin/start-master.sh:没有这样的文件或目录 这是否意味着我必须使用绝对路径 有没有办法在Kubernetes YAML文件中使用环境变量?没有办法 在Dockerfile中定义ENV时,您正在声明容器内部使用的变量 在.yaml文件中设
SPARK\u HOME
时(参见下面的代码),我得到了一个错误:
${SPARK_HOME}/sbin/start-master.sh:没有这样的文件或目录
这是否意味着我必须使用绝对路径
有没有办法在Kubernetes YAML文件中使用环境变量?没有办法 在Dockerfile中定义
ENV
时,您正在声明容器内部使用的变量
在.yaml
文件中设置变量时,将在主机级别定义该变量
如果需要使用环境变量来运行程序,请使用bash脚本作为入口点:
#!/bin/bash
${SPARK_HOME}/sbin/start-master.sh \
--host 0.0.0.0
--port $(SPARK_MASTER_PORT) \
--webui-port $(SPARK_MASTER_WEBUI_PORT) \
&& tail -f $(SPARK_HOME)/logs/*
由于这个bash脚本是在容器中执行的,它将使用这些环境变量。它不是这样工作的 在Dockerfile中定义
ENV
时,您正在声明容器内部使用的变量
在.yaml
文件中设置变量时,将在主机级别定义该变量
如果需要使用环境变量来运行程序,请使用bash脚本作为入口点:
#!/bin/bash
${SPARK_HOME}/sbin/start-master.sh \
--host 0.0.0.0
--port $(SPARK_MASTER_PORT) \
--webui-port $(SPARK_MASTER_WEBUI_PORT) \
&& tail -f $(SPARK_HOME)/logs/*
由于此bash脚本在容器内执行,它将使用这些环境变量。根据,$(VAR)
(圆括号,如David Maze所写)适用于args
。我的尝试表明,它也被替换为命令中的根据,
$(VAR)
(圆括号,如David Maze所写)适用于args
。我的尝试表明它也在命令中被替换
在pod规范中唯一有效的变量扩展形式是$(variable_NAME)
;在命令的第一行:
中,不识别花括号。pod规范中唯一有效的变量扩展形式是$(variable_NAME)
;在命令的第一行:
,不识别花括号。