【发布时间】:2020-03-19 04:34:48
【问题描述】:
比如我做了一个spark:2.4.3 docker镜像,我在Dockerfile中设置了一个ENV SPARK_HOME。
当我在 yaml 文件中使用SPARK_HOME 时(见下面的代码),出现错误:
${SPARK_HOME}/sbin/start-master.sh: 没有这样的文件或目录
# ...
containers:
- name: spark-master
image: spark:2.4.3
command:
- ${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/*
env:
- name: SPARK_MASTER_PORT
valueFrom:
configMapKeyRef:
name: spark-config
key: spark_master_port
- name: SPARK_MASTER_WEBUI_PORT
valueFrom:
configMapKeyRef:
name: spark-config
key: spark_master_webui_port
# ...
这是否意味着我必须使用绝对路径?
有没有办法在 Kubernetes YAML 文件中使用环境变量?
【问题讨论】:
-
在 pod 规范中唯一有效的变量扩展形式是
$(VARIABLE_NAME);在command:的第一行中,大括号无法识别。 -
@DavidMaze 有些人在他们的规范中使用花括号,例如,github.com/Angatar/mysql-s3-backup/blob/master/…。他们为什么这样做?
-
该特定行是
sh -c的参数,因此主容器进程是一个扩展它的shell。 Kubernetes 本身不会对该行做任何事情。
标签: kubernetes environment-variables yaml