Переменные среды доступа Kubernetes kubectl - PullRequest
1 голос
/ 12 мая 2019

Кто-нибудь знает, почему этот не (показывает пустую строку):

kubectl exec kube -- echo $KUBERNETES_SERVICE_HOST

но этот работает?

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

Спасибо, Ким

1 Ответ

3 голосов
/ 13 мая 2019

Успешный запуск будет зависеть от образа, который вы используете для kube. Но в общих чертах echo - это встроенная команда Bourne shell .

С помощью этой команды:

$ kubectl exec kube -- echo $KUBERNETES_SERVICE_HOST

Вы не создаете экземпляр среды Bourne Shell, и в контейнере нет исполняемого файла echo. Оказывается, что kubectl в основном запускает echo $KUBERNETES_SERVICE_HOST на вашем клиенте! Вы можете попробовать запустить, например:

$ kubectl exec kube -- echo $PWD

Вы увидите, что это домашний каталог вашего клиента.

Тогда как с помощью этой команды:

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

В вашей среде есть исполняемый файл sh, и это Bourne Shell, который понимает встроенную команду echo с заданной средой Kubernetes в контейнере по умолчанию вашего Pod.

Надеюсь, это поможет.

...