【问题标题】:Is there a way to inject job id as an env variable into a container in kubernetes?有没有办法将作业 id 作为环境变量注入到 kubernetes 的容器中?
【发布时间】: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


【解决方案1】:

我在命令中执行了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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2018-09-04
    • 2021-10-05
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多