Kubernetes获得完整的Pod名称作为环境变量

时间:2019-09-25 15:11:57

标签: kubernetes kubectl kubernetes-pod

我知道我可以定义这样的内容以在容器中获取容器名称:

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

但是当我跑步时:$kubectl get pods

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

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

非常感谢

1 个答案:

答案 0 :(得分:0)

您不需要使用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:/#

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