是否可以在kubernetes yaml env设置中传递当前日期时间?

时间:2020-10-07 12:58:14

标签: kubernetes yaml

我想将Pod部署为Pod内的环境变量的时间。 我似乎无法完成这项工作。有人举过一个例子,或者有一些指针吗?

2 个答案:

答案 0 :(得分:1)

如果您使用的是简单的广告连播,则此解决方案将对您不起作用。因为pod的env字段一旦创建就变得不可变。

但是,如果您使用的是托管Pod(即部署,statefulset等),则可以使用kubectl set env命令来更新环境变量。

$ kubectl get deployment nginx-deployment -o=jsonpath='{.metadata.creationTimestamp}'
2020-10-07T13:24:49Z

$ kubectl set env deployment/nginx-deployment CREATIONTIME=$(kubectl get deployment nginx-deployment -o=jsonpath='{.metadata.creationTimestamp}')
deployment.apps/nginx-deployment env updated

$ kubectl exec -it nginx-deployment-7657f96b7f-6w8lf -- env
... ... ...
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=nginx-deployment-7657f96b7f-6w8lf
NGINX_VERSION=1.15.4-1~stretch
NJS_VERSION=1.15.4.0.2.4-1~stretch
CREATIONTIME=2020-10-07T13:24:49Z
... ... ...

我使用的部署文件-Link

答案 1 :(得分:0)

出于好奇,您为什么要这样做?所有kubernetes对象的状态都存储在etcd中,并且可以通过k8s API进行访问。

  availableReplicas: 2
  conditions:
  - lastTransitionTime: "2020-09-22T09:40:02Z"
    lastUpdateTime: "2020-09-22T09:42:02Z"
    message: ReplicaSet "nginx-demo-5f4b9dd57d" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  - lastTransitionTime: "2020-09-23T12:57:46Z"
    lastUpdateTime: "2020-09-23T12:57:46Z"
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available```