簡體   English   中英

如何將創建時間戳傳遞給 Kubernetes cronjob

[英]How to pass creation timestamp to kubernetes cronjob

在我的容器中,我的spec.jobTemplate.spec.template.spec中有:

          containers:
            - name: "run"
              env:
                {{ include "schedule.envVariables" . | nindent 16 }}
                - name: POD_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                - name: POD_CREATION_TIMESTAMP
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.creationTimestamp

但是我只是得到錯誤:

CronJob.batch "schedule-3eb71b12d3" 無效:spec.jobTemplate.spec.template.spec.containers[0].env[19]

當更改為:

- name: POD_CREATION_TIMESTAMP
  value: ""

我沒有錯誤。 任何想法?

原因是fieldRef不支持使用metadata.creationTimestamp

$ kubectl explain job.spec.template.spec.containers.env.valueFrom

...
   fieldRef <Object>
     Selects a field of the pod: supports metadata.name, metadata.namespace,
     `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`, spec.nodeName,
     spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
...

Kubernetes 缺乏這種能力。 當我嘗試使用fieldPath添加該字段時,我看到:

field label not supported: metadata.creationTimestamp

獲得該值的唯一有保證的方法(我能想到的)是讓您的 cronjob RBAC 訪問以在運行時請求該信息。 然后,您可以從 pod 內部運行它以獲取該值:

kubectl get pod ${POD_NAME} -o=jsonpath='{.metadata.creationTimestamp}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM