Развертывание приложения в Kubernetes (k8s) осуществляется с помощью утилиты kubectl. Полный синтаксис команд утилиты можно найти в официальной документации.
Kubectl работает в командной строке или терминале.
Убедиться что kubectl установлен можно при помощи команды:
Общий формат команды kubectl: kubectl action resource (kubectl -> действие -> сущность, на которую направлено действие)
Эта последовательность команд выполняет указанное действие (например, создание, описание) для указанного ресурса (например, узла, контейнера). Можно использовать —help после команды, чтобы получить дополнительную информацию о возможных параметрах, например
Перед выполнением работы на кластере необходимо подключиться к нему, предварительно импортировав конфигурационный файл, загруженный при создании кластера:
Убедитесь, что kubectl настроен для взаимодействия с вашим кластером, выполнив команду kubectl version:
В ответ должно получиться примерно следующее:
Просмотреть узлы в кластере можно при помощи команды:
Должно получиться примерно следующее:
Отображаются доступные узлы. Kubernetes выберет где развернуть приложение в зависимости от доступных ресурсов Node.
Развернем первое приложение в Kubernetes с помощью команды kubectl create deployment. Нужно указать имя развертывания и расположение образа приложения.
В результате выполнения команд было развернуто приложение. Это включало несколько этапов:
Чтобы вывести список деплойментов, используется команда get deployments:
Результатом выполнения команды будет:
В выводе отражен 1 деплоймент с одним экземпляром приложения. Экземпляр работает внутри контейнера Docker на узле.
Поды, работающие внутри Kubernetes, работают в частной изолированной сети. По умолчанию они видны из других подов и сервисов в том же кластере Kubernetes, но не за пределами этой сети. Когда используется kubectl, осуществляется взаимодействие через конечную точку API для связи с приложением.
Kubectl может создать прокси, который будет пересылать сообщения в частную сеть всего кластера. Прокси-сервер можно завершить, нажав Ctrl-C, и он не будет показывать никаких результатов во время работы.
Следующим шагом запустим прокси в новом окне командной строки или терминала:
Затем нужно выполнить команду kubectl proxy:
После этого появляется соединение между хостом (онлайн-терминалом) и кластером Kubernetes. Прокси-сервер обеспечивает прямой доступ к API с этих терминалов.
Можно увидеть все API, размещенные через конечную точку прокси. Например, можно запросить версию напрямую через API, используя команду curl:
curl https://localhost:8001/version
Результатом вывода команды будет:
Если порт 8001 недоступен, необходимо убедиться, что прокси kubectl запущен.
Сервер API автоматически создаст конечную точку для каждого модуля на основе имени модуля, который также доступен через прокси.
Сначала нужно получить имя Pod, и сохранить в переменной окружения POD_NAME:
Должно получиться примерно следующее:
Примечание
Прокси-сервер запускался в новой вкладке (Терминал 2), а последние команды выполнялись на исходной вкладке (Терминал 1). Прокси-сервер по-прежнему работает на второй вкладке, и это позволило команде curl работать с использованием localhost: 8001
Было полезно?
Опишите вашу задачу, и мы поможем вам ее решить