Kubernetes 获取完整的 pod 名称作为环境变量

Kubernetes get the full pod name as environment variable

我知道我可以定义这样的东西来获取容器中的 pod 名称:

env:
- name: POD_NAME
  valueFrom:
     fieldRef:
       fieldPath: metadata.name

但是当我运行:$kubectl get pods

我有不同的结果,例如:uipod-5d6795db87-cxxkg 对应于 <replicatset name>-cxxkg

是否可以获取全名 (uipod-5d6795db87-cxxkg) 作为环境变量?而不仅仅是 pod 名称 (uipod).

非常感谢

您不需要使用 pod 名称显式设置环境变量,它已经作为名为 HOSTNAME 的环境变量存在于 pod 中。

例如

$ kubectl run nginx --image=nginx
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectlrun --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx created
$
$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-7bb7cd8db5-kddbs   1/1     Running   0          12s
$
$ kubectl exec -it nginx-7bb7cd8db5-kddbs bash
root@nginx-7bb7cd8db5-kddbs:/#
root@nginx-7bb7cd8db5-kddbs:/# env | grep HOSTNAME
HOSTNAME=nginx-7bb7cd8db5-kddbs
root@nginx-7bb7cd8db5-kddbs:/#

注意:如您所见,HOSTNAME 环境变量已经设置了确切的 pod 名称。