Создание модулей (POD) из дескрипторов YAML или JSON
Создание модулей (POD)
Существуют неуправляемые модули, создаваемые напрямую и управляемые модули, которые создаются и управляются контроллерами репликации (ReplicationController) или развертываниями (Deployment).
Модули и другие ресурсы Kubernetes обычно создаются путем публикации манифеста JSON и YAML в конечной точке API REST Kubernetes или командой kubectl run. Определение объектов Kubernetes из файлов YAML позволяет хранить их в системе управления версиями.
Команда для получения полного определения дескриптора YAML существующего модуля:
$ kubectl get po имя_модуля -o yaml
Структура файла YAML развернутого модуля:
apiVersion: v1 [Версия API Kubernetes, используемая в этом дескрипторе YAML]
kind: Pod [Тип объекта/ресурса Kubernetes]
metadata: [метаданные – включают имя, пространство имен, метки и другую информацию о модуле]
…
spec: [спецификация – содержит описание содержимого модуля (контейнеры модуля, тома и др. данные]
…
status: [подробный статус модуля и его контейнеров]
Создание простого дескриптора YAML для модуля.
Создайте файл под названием kubia-manual.yaml
apiVersion: v1 kind: Pod metadata: name: kubia-manual spec: containers: – image: vasya/kubia name: kubia ports: – containerPort: 8080 protocol: TCP
Описание соответствует версии v1 API Kubernetes, тип ресурса – это модуль с именем kubia-manual. Модуль состоит из одного контейнера на основе образа vasya/kubia. В описании присвоено имя контейнеру и указано, что он слушает порт 8080. Указание портов в определении модуля является информационным. Их пропуск не влияет на возможность подключения клиентов к модулю через порт. Если контейнер принимает подключения через порт, привязанный к адресу 0.0.0.0, другие модули всегда смогут подключаться к нему, даже если порт не указан в спецификации модуля явно. Имеет смысл явно определять порты, чтобы каждый, кто использует кластер, мог увидеть, к каким портам обеспечивается доступ каждым модулем. Явное определение портов также позволяет назначить каждому порту имя.
Создание модуля командой kubectl create
Для того чтобы создать модуль из файла YAML, используйте команду kubectl create:
$ kubectl create -f kubia-manual.yaml
Команда kubectl create с ключем -f применяется для создания любого ресурса Kubernetes (не только модулей) из файла YAML или JSON.
После создания модуля можете запросить у Kubernetes полный YAML модуля.
$ kubectl get po kubia-manual -o yaml
Поручить kubectl вернуть JSON:
$ kubectl get po kubia-manual -o json
Получить список модулей в системе:
$ kubectl get pods
Посмотреться журнал модуля (журнал контейнера):
$ kubectl logs kubia-manual
Если модуль содержит несколько контейнеров, необходимо при выполнении команды kubectl logs явно указать имя контейнера:
$ kubectl logs kubia-manual -c kubia
Отправка запросов в модуль
Получить доступ к модулю извне можно через переадресацию портов либо путем создания службы используя команду kubectl expose.
Переадресация локального сетевого порта на порт в модуле
Когда вы хотите обменяться информацией с конкретным модулем без прохождения службы (для отладки или по другим причинам), Kubernetes позволяет настроить переадресацию портов на модуль. Это делается с помощью команды kubectl port-forward. Следующая ниже команда перенаправит локальный порт 8888 вашей машины на порт 8080 модуля kubia-manual:
$ kubectl port-forward kubia-manual 8888:8080
Для отправки HTTP-запроса в модуль через прокси-сервер переадресации портов kubectl port-forward, работающий на localhost:8888, можно использовать curl:
$ curl localhost: 8888
0