【发布时间】:2020-10-08 13:10:25
【问题描述】:
我想使用 pod 部署的时间作为 pod 内的环境变量。 不过,我似乎无法完成这项工作。任何人都有一个关于如何做到这一点的例子或者一些指针?
【问题讨论】:
-
向下 API 没有这个。也许你可以从 helm 传递
{{ now | date "20060102150405" }}或$(date)-$(uptime)并从 shell 解析。
标签: kubernetes yaml
我想使用 pod 部署的时间作为 pod 内的环境变量。 不过,我似乎无法完成这项工作。任何人都有一个关于如何做到这一点的例子或者一些指针?
【问题讨论】:
{{ now | date "20060102150405" }} 或 $(date)-$(uptime) 并从 shell 解析。
标签: kubernetes yaml
如果您使用的是简单的 pod,那么此解决方案将不适合您。因为 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
【讨论】:
只是出于好奇,你为什么要这样做?所有 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```
【讨论】: