Выполнение модуля kubernetes с использованием имени модуля - PullRequest
0 голосов
/ 25 апреля 2020

Я пишу сценарий оболочки для выполнения модуля, для которого используется следующий синтаксис:

winpty  kubectl --kubeconfig="C:\kubeconfig" -n namespace exec -it podname bash

Это работает нормально, но поскольку имя модуля нестабильно и изменяется для каждого развертывания, есть ли альтернатива этому?

Спасибо.

Ответы [ 3 ]

1 голос
/ 25 апреля 2020

Вы можете использовать следующую команду:

kubectl -n <namespace> exec -it deploy/<deployment-name> -- bash
0 голосов
/ 27 апреля 2020

Обычно вы можете использовать команду $ kubectl exec, но укажите значение для изменения имени модуля.

Предполагая, что у вас есть развертывание и помечены pods: app = example, просто выполните:

$ kubectl exec -it $(kubectl get pods -l app=example -o custom-columns=:metadata.name) -- bash

EDIT:

Вы также можете выполнить:

POD_NAME = $(kubectl get pods -l app=example -o custom-columns=":metadata.name")

или

POD_NAME = $(kubectl get pods -l app=example -o jsonpath = "{. Items [0] .metadata.name}")

наконец

$ winpty kubectl exec -ti $POD_NAME --bash

Убедитесь, что вы выполнили команду в правильном пространстве имен - вы также можете добавить флаг -n и определить его .

0 голосов
/ 25 апреля 2020

Добавьте службу к вашему приложению:

Как вы знаете, капсулы эфемерны; Они появляются и исчезают динамически, чтобы обеспечить соответствие вашего приложения вашей конфигурации. Это поведение реализует аспекты масштабирования и самовосстановления kubernetes.

Ваше приложение будет состоять из одного или нескольких модулей, доступных через службу . Имя и адрес службы приложения не изменяются и, таким образом, действует как стабильный интерфейс для доступа к вашему приложению.

Этот метод работает, если ваше приложение имеет один или несколько пакетов.

Помогает ли это?

...