Создание модулей (POD) из дескрипторов YAML или JSON

Автор Itworkroom

Создание модулей (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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *