【发布时间】:2021-12-27 22:08:01
【问题描述】:
下面的 yaml 将 pod 的名称作为 RUN_ID 注入到容器中。如果此 cron 作业启动 10 个 pod(并行度 = 10),则 10 个 pod 中的每一个都将具有不同的运行 ID。但我希望所有 10 个 pod 都具有相同的运行 ID。 DownwardApi 似乎不支持检索作业 ID。还有其他方法吗?
在我的情况下,它不需要是工作 ID。启动新作业时可以在所有 10 个 pod 中设置的任何随机 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
.
.
【问题讨论】:
-
您不能简单地取一个 pod 名称并提取除最后一个
-\w+段之外的所有内容吗? -
在 yaml 文件中设置环境变量时是否可以进行此类提取?你能举个例子吗?
-
您使用的是哪个版本的 Kubernetes,您是如何设置集群的?您是否使用裸机安装或某些云提供商?重现您的问题很重要。
-
Kubernetes 版本:1.19.0,提供者:Azure
标签: kubernetes kubernetes-cronjob