Kubernetes Kubectl访问环境变量

时间:2019-05-12 20:24:30

标签: kubernetes kubectl

有人知道为什么不这样做(显示空行)吗?

kubectl exec kube -- echo $KUBERNETES_SERVICE_HOST

但是这个有效吗?

kubectl exec kube -- sh -c 'echo $KUBERNETES_SERVICE_HOST'

谢谢, 金

3 个答案:

答案 0 :(得分:3)

成功运行将取决于您用于device_index=2的图像。但一般来说kube是内置的Bourne shell命令。

使用此命令:

echo

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

echo $KUBERNETES_SERVICE_HOST

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

使用此命令:

$ kubectl exec kube -- echo $PWD

您的环境中有一个$ kubectl exec kube -- sh -c 'echo $KUBERNETES_SERVICE_HOST' 可执行文件,而Bourne Shell可以在Pod的默认容器中了解给定Kubernetes环境中的内置sh命令。

希望有帮助。

答案 1 :(得分:0)

显示空行的原因与kubernetes或容器无关。在您的第一行中,$KUBERNETES_SERVICE_HOST由运行您的外壳程序解释。而且您不得在该外壳程序中设置KUBERNETES_SERVICE_HOST,因此它使用空字符串代替。

根据您所看到的内容,我推断您正在尝试找出kubernetes容器内KUBERNETES_SERVICE_HOST变量 的值。您的最后一条命令将为您执行此操作,我怀疑以下命令会执行相同的操作。

kubectl exec kube -- echo '$KUBERNETES_SERVICE_HOST'

答案 2 :(得分:0)

如果需要,通常不使用sh -c的一个选项是:

kubectl exec kube -- env | grep KUBERNETES_SERVICE_HOST