Kubernetes (3)

Продолжение. Начало — здесь.

Компоненты Kubernetes (продолжение, начало — здесь)

Строительные блоки рабочей нагрузки

Рабочие нагрузки (Workload) – это приложения (Application), которые работают в среде Kubernetes. Когда в Kubernetes запускается какая-то нагрузка (одно или несколько приложений) то используется абстракция, которая называется развёртыванием (deployment, для такой абстракции используется английский термин – «деплоймент»). При это появляется возможность абстрагирования приложения от набора подов, в которых они работают, что является основной задачей архитектуры Kubernetes. Поды – это нечто эфемерное, и они могут быть выключены в любой момент. Например, если под не проходит проверку работоспособности (health check), то он подлежит отключению и должен быть автоматически заменён другим (если не задано иное действие для такого случая). Поды имеют IP-адреса и при замене их на другие поды, они будут иметь другие IP-адреса.

Деплойменты представляют собой подборки подов, направляемые политиками, обеспечивающими длительно существующие абстракции для запуска рабочих нагрузок. Сервисы – это другая абстракция Kubernetes, и они отвечают за предоставление стабильных IP-адресов и сетевого доступа к набору подов. Как показано на рис.3, сервисы часто требуют нескольких подов (3). Наборы реплик, ReplicaSets (2), (см. рис. 5) используются для определения набора идентичных подов (то есть их репликаций), работающих внутри кластера. ReplicaSets описываются в политиках и используются в желаемой модели состояния. Например, политика ReplicaSet может определять то, сколько подов находятся в  ReplicaSet, и тот образ контейнера (container image), который запускается в подах. ReplicaSets хорошо работает, когда сервисы не сохраняют состояние (т.е. они stateless), но когда они работают в приложениях, например, в базе данных, нужно использовать наборы с сохранением состояния StatefulSet. Наборы StatefulSet могут поддерживать идентичность во многих подах, когда один нужно заменить на другой.

Рисунок 5. Абстрагирование нагрузки даёт возможность создания более стабильной, масштабируемой и гибкой среды для предоставления сервисов. (Начало см. здесь)

Сервисы часто оснащаются новыми свойствами (features). В Kubernetes, используется абстрагирование деплоймента (1), которая используется для модификации подов и ReplicaSet’ов. Деплойменты используется для «наката» ReplicaSet’ов, изменения желаемого состояния подов или отката назад в стабильное состояние.

Иногда желательно сегментировать ресурсы внутри кластера. Например, некоторые ноды могут конфигурироваться с графическими процессорами GPU, которые должны резервироваться для построения моделей машинного обучения.

В этом случае можно использовать именные пространства (namespaces), которые в Kubernetes являются механизмом для определения групп ресурсов внутри облака. При декларировании сервисов и подов можно также определить, в каком пуле ресурсов или именном пространстве namespace они будут разворачиваться. Это особенно полезно, когда в одном кластере работают много проектов разработки с различными приоритетами и требованиями к ресурсам.

Абстрагирование сервисов (Service abstraction) хорошо работает в случае долгоживущих сервисов, например, таких как как API-сервер, но некоторые рабочие нагрузки нужно выполнять только один раз до их завершения и больше не повторять. Задача (Job) – это абстракция для запуска приложения, например task, и послу того, как задача завершена, поды выключаются.

При запуске сервиса, который должен иметь только один экземпляр (instance) на одну ноду, можно использовать наборы DaemonSets. Это, в частности, полезно, когда необходимо запускать агенты логгинга или мониторинга на ноде для сбора данных и передачи их в централизованный журнал (centralized log), или платформу наблюдения (observability platform).

Для систем хранения, в Kubernetes используются тома (Volumes) и запросы VolumeClaims. Они являются абстракцией постоянного хранилища (persistent storage) для подов в случае их разрушения, а также для предоставления общего доступа к хранилищу для всех подов.

PersistentVolumes – это объём хранения, который предоставляет Kubernetes. PersistentVolumeClaim – это запрос на выделение объёма хранения, который позволяет пользователю получить постоянное хранилище Persistent Volume. Эти тома Volumes могут быть сконфигурированы для различных требований по объёму и производительности.  

* * *

Для дополнительного изучения:

Именные пространства (Namespaces), сродство (Affinity), и «примеси» (Taints): размещение ресурсов в кластере.  

Как уже было сказано, именные пространства namespaces это подчинённые наборы (subsets) ресурсов в кластере. В Kubernetes можно задавать эти ресурсы различными способами.

Сродство нодов (Node affinity) – это свойство подов, которое «притягивает» их к определённым нодам. Примеси (Taints) – это свойства нод, которые блокируют размещение того или иного пода в ноде.

«Послабления» (Tolerations) – это спецификации, которые позволяют планирование возможности размещения подов в определённых узлах, если эти Tolerations для них подходят. Примеси и послабления (taints and tolerations) могут давать возможность предусматривать (разрешать) размещение подов на некоторых подходящих нодах.

Более подробно эти термины объясняются здесь: https://kubernetes.io/docs/concepts/scheduling-evic­tion/taint-and-toleration/.

Продолжение Kubernetes (4).

Об авторе Алексей Шалагинов

Независимый эксперт
Запись опубликована в рубрике NFV, цифровая трансформация с метками , , , , , . Добавьте в закладки постоянную ссылку.

3 отзыва на “Kubernetes (3)

  1. Уведомление: Kubernetes (2) | Telecom & IT

  2. Уведомление: Kubernetes (4) | Telecom & IT

  3. Уведомление: Kubernetes (6) | Telecom & IT

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.