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 名称。
我知道我可以定义这样的东西来获取容器中的 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 名称。