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

aku*_*ma8 1 kubernetes kubectl kubernetes-pod

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

env:
- name: POD_NAME
  valueFrom:
     fieldRef:
       fieldPath: metadata.name
Run Code Online (Sandbox Code Playgroud)

但是当我运行时: $kubectl get pods

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

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

非常感谢

mch*_*wre 5

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

例如

$ 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:/#
Run Code Online (Sandbox Code Playgroud)

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