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