[英]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.