有没有办法将作业 ID 作为 env 变量注入到 kubernetes 中的容器中?
Is there a way to inject job id as an env variable into a container in kubernetes?
下面的 yaml 将 pod 的名称作为 RUN_ID 注入到容器中。如果此 cron 作业启动 10 pods(并行度 = 10),则 10 pods 中的每一个都将具有不同的 运行 id。但我希望所有 10 pods 都具有相同的 运行 id。 DownwardApi 似乎不支持检索作业 ID。还有其他方法吗?
在我的例子中,它不必是工作 ID。当启动新作业时,可以在所有 10 pods 中设置的任何随机 ID 都可以。因此,对此的任何想法也会有所帮助。
apiVersion: batch/v1
kind: CronJob
metadata:
name: ${CRONJOB_NAME}
namespace: ${NAMESPACE_NAME}
spec:
schedule: "0 8 * * *"
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
backoffLimit: 4
parallelism: ${PARALLEL_JOBS_COUNT}
completions: ${PARALLEL_JOBS_COUNT}
template:
spec:
containers:
- name: ${CONTAINER_NAME}
image: ${DOCKER_IMAGE_NAME}
imagePullPolicy: IfNotPresent
env:
- name: RUN_ID
valueFrom:
fieldRef:
fieldPath: metadata.name ---> this gets the pod's name
.
.
我在命令中执行了 RUN_ID=${POD_NAME%\-*}
从 pod 名称中提取作业名称。这解决了我的用例。
spec:
containers:
- name: ${CONTAINER_NAME}
image: ${ACR_DNS}/${JMETER_DOCKER_IMAGE}
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- 'export RUN_ID=${POD_NAME%\-*}; cd /config; /entrypoint.sh -n -Jserver.rmi.ssl.disable=true -Ljmeter.engine=debug -Jjmeterengine.force.system.exit=true -t $(JMETER_JMX_FILE)'
env:
- name: RUN_ID
valueFrom:
fieldRef:
fieldPath: metadata.name
下面的 yaml 将 pod 的名称作为 RUN_ID 注入到容器中。如果此 cron 作业启动 10 pods(并行度 = 10),则 10 pods 中的每一个都将具有不同的 运行 id。但我希望所有 10 pods 都具有相同的 运行 id。 DownwardApi 似乎不支持检索作业 ID。还有其他方法吗?
在我的例子中,它不必是工作 ID。当启动新作业时,可以在所有 10 pods 中设置的任何随机 ID 都可以。因此,对此的任何想法也会有所帮助。
apiVersion: batch/v1
kind: CronJob
metadata:
name: ${CRONJOB_NAME}
namespace: ${NAMESPACE_NAME}
spec:
schedule: "0 8 * * *"
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
backoffLimit: 4
parallelism: ${PARALLEL_JOBS_COUNT}
completions: ${PARALLEL_JOBS_COUNT}
template:
spec:
containers:
- name: ${CONTAINER_NAME}
image: ${DOCKER_IMAGE_NAME}
imagePullPolicy: IfNotPresent
env:
- name: RUN_ID
valueFrom:
fieldRef:
fieldPath: metadata.name ---> this gets the pod's name
.
.
我在命令中执行了 RUN_ID=${POD_NAME%\-*}
从 pod 名称中提取作业名称。这解决了我的用例。
spec:
containers:
- name: ${CONTAINER_NAME}
image: ${ACR_DNS}/${JMETER_DOCKER_IMAGE}
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- 'export RUN_ID=${POD_NAME%\-*}; cd /config; /entrypoint.sh -n -Jserver.rmi.ssl.disable=true -Ljmeter.engine=debug -Jjmeterengine.force.system.exit=true -t $(JMETER_JMX_FILE)'
env:
- name: RUN_ID
valueFrom:
fieldRef:
fieldPath: metadata.name