我知道我可以定义这样的东西来获取容器中的pod名称:
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
字符串
但是当我运行时:$kubectl get pods
我有一个不同的结果,类似于:uipod-5d6795db87-cxxkg
对应于<replicatset name>-cxxkg
。
有没有可能得到完整的名字(uipod-5d6795db87-cxxkg
)作为命名变量?而不是只得到pod的名字(uipod
)。
非常感谢
2条答案
按热度按时间wr98u20j1#
你不需要显式地设置环境变量pod name,它已经在pod中作为一个名为
HOSTNAME
的环境变量存在。例如
字符串
HOSTNAME
环境变量已经设置了确切的pod名称。*u2nhd7ah2#
official Kubernetes documentation没有指定
HOSTNAME
环境变量中提供pod名称。它只提到libc中的hostname
命令和gethostname
函数调用:Container的hostname是Container运行所在Pod的名称。可以通过hostname命令或libc中的gethostname函数调用获得。
因此,虽然在实践中许多Kubernetes发行版确实设置了它,但为了最大限度地兼容,最好坚持规范。
许多编程语言的标准库依赖于libc中的
gethostname
函数调用。例如,在Java中,InetAddress.getLocalHost().getHostName()
does it。