Kubernetes kubectl 访问环境变量

Kim*_*Kim 8 kubernetes kubectl

有谁知道为什么这个没有(显示空行):

kubectl exec kube -- echo $KUBERNETES_SERVICE_HOST
Run Code Online (Sandbox Code Playgroud)

但这个有效吗?

kubectl exec kube -- sh -c 'echo $KUBERNETES_SERVICE_HOST'
Run Code Online (Sandbox Code Playgroud)

Ric*_*ico 8

成功运行将取决于您使用的图像kube。但总的来说echo是一个内置的Bourne shell命令。

使用此命令:

$ kubectl exec kube -- echo $KUBERNETES_SERVICE_HOST
Run Code Online (Sandbox Code Playgroud)

您没有实例化 Bourne Shell 环境,并且echo容器中没有可执行文件。事实证明,kubectl它基本上是echo $KUBERNETES_SERVICE_HOST在您的客户端上运行的!您可以尝试运行,例如:

$ kubectl exec kube -- echo $PWD
Run Code Online (Sandbox Code Playgroud)

您将看到这是客户端上的主目录。

而使用此命令:

$ kubectl exec kube -- sh -c 'echo $KUBERNETES_SERVICE_HOST'
Run Code Online (Sandbox Code Playgroud)

sh您的环境中有一个可执行文件,那就是 Bourne Shell,它可以理解echoPod 的默认容器中给定 Kubernetes 环境的内置命令。