Базовая работа с Kubernetes — часть 1

Ресурсы/объекты в Kubernetes (Deployment, Service, ReplicaSet, Pod и т .д.) можно создавать двумя методами/способами
Императивный – определяем что должно произойти/какие команды нужно выполнить и в какой последовательности, каким образом нужно получить желаемое состояние ресурсов
Декларативный – определяем состояние ресурсов, которое мы хотим получить, без указания каким именно образом должно быть достигнуто такое состояние.
Такое определение выражается в создании yaml|json манифестов с последующим их применением

 

Императивное создание ресурсов(Imperative)
Создадим Deployment с именем hello-world

При этом создается следующая цепочка ресурсов

Имя ReplicaSet имеет формат

Имя Pod-а имеет формат

т.е.

 

Просмотр всех существующих ресурсов в дефолтном namespace

 

Детальное описание пода, реплики-сет и деплоймента

 

Просмотр сущесутвующих Pod-ов в default namespace

Просмотр сущесутвующих ReplicaSet в default namespace

Просмотр сущесутвующих Deployment в default namespace

 

Просмотр ноды, на которой запущен под

 

Просмотр логов контейнера, запущенного в поде hello-world-58d58c846c-66pwl

Альтернативным вариантом просмотра логов контейнера, является их просмотр через docker команду, выполненную на ноде, на которой запущен Pod
Подключимся к ноде, на которой запущен под и посмотрим логии контейнера

 

Выполнение команд внутри контейнера, запущенного внутри пода

 

Создание Service для существующего deployment(порт сервиса 80 и порт приложения, запущенного в контейнере – 8080)
Будет создан Service с типом ClusterIP(доступ к такому сервису возможен только изнутри кластера)

Проверка наличия созданного ресурса Service с именем hello-world, а также кластерного IP-адреса и порта, на котором доступна Service

Просмотр детального описания Service(также здесь указаны конечные точки(endpoints) – поды, на которые по факту перенаправляются запросы, поступающие на Service)

Доступ к Service внутри кластера – т.е. с любой ноды и с любого пода можно получить доступ к Service по следующем кластерному адресу и порту 10.108.178.162:80

Service действует как виртуальный балансировщик нагрузки, перенаправляя поступивший на Service запрос одному из активных/запущенных Pod-ов(endpoint-ов) и принимая ответ от этого Poda для дальнейшей передачи его клиенту

Проверяем доступ к Service со всех нод

Для траблшутинга/дебага также можно напрямую обращаться/посылать запрос на активные/текущие pod-ы (в описании Service, доступного по команде kubectl describe service hello-world, они указывается в параметре Endpoints)

Просмотр текущих endpoint-ов, доступных для Service

Проверка доступности указанного пода со всех нод кластера

 

Получение информации об объекте/ресурсе

Получение доступных параметров/опций для описания ресурса

Получение описания ресурсов(например, service) в json,yaml-форматах

Экспортирование описания ресурсов service и deployment в yaml-файл.

Полученные YAML-файлы можно использовать для создания тех же ресурсов, из описания которых они были cозданы(service, deployment)

Удаление ресурсов, созданных императивным способом

Проверим отсутствие ресурсов

 

Создание объектов/ресурсов типа Deployment и Service с помощью декларативного способа(Declarative)

Проверяем наличие созданных ресурсов(включая ReplicaSet иPod)

Проверим доступность Service

 

Масштабируем наш деплоймент с одной до двух реплик

Обновляем нашу конфигурацию с помощью команды kubectl apply

Проверяем наличие двух реплик deployment

Выполним сurl-запросы к Service hello-world для проверки балансировки запросов на разные Pod-ы

Просмотр кластерного IP-адреса и порта Service

Просмотр доступных Pod-ов для Service hello-world

Проверка балансировки запросов между подами

 

Изменение ресурсов «на лету»
Можно редактировать ресурсы «на лету» внося изменения конфигурации с помощью команды kubectl edit.
Изменения сразу сохраняются в etcd – кластерное хранилище
При этом, естественно, эти изменения не влияют на/не изменяют yaml-файлы, с которых создавались ресурсы декларативным методом

Например, увеличим кол-ва реплик деплоймента с 2-х до 3-х

Проверяем кол-во деплойментов и соответсвенно подов

Удаление созданный декларативным методом ресурсов.

 

Полезные команды kubectl
https://kubernetes.io/docs/reference/kubectl/cheatsheet
https://github.com/dennyzhang/cheatsheet-kubernetes-A4

Несколько полезных команд kubectl

 

Источник:
https://kubernetes.io/docs/reference/kubectl/overview

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика