有人知道为什么不这样做(显示空行)吗?
kubectl exec kube -- echo $KUBERNETES_SERVICE_HOST
但是这个有效吗?
kubectl exec kube -- sh -c 'echo $KUBERNETES_SERVICE_HOST'
谢谢, 金
答案 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