Поделиться через


Архитектура кластера Kubernetes и рабочие нагрузки для AKS в Windows Server

Область применения: AKS на Windows Server

Служба Azure Kubernetes (AKS) в Windows Server — это корпоративная платформа контейнеров Kubernetes. Она включает в себя ядро Kubernetes, специально созданный узел контейнеров Windows и узел контейнера Linux, поддерживаемый Корпорацией Майкрософт, с целью простого развертывания и управления жизненным циклом.

В этой статье представлены основные компоненты инфраструктуры Kubernetes, такие как плоскость управления, узлы и пулы узлов. Кроме того, здесь дается представление о ресурсах рабочих нагрузок, таких как модули pod, развертывания и наборы, а также о возможности группировать ресурсы в пространства имен.

Архитектура кластера Kubernetes

Kubernetes является основным компонентом AKS в Windows Server. AKS использует набор предопределенных конфигураций для эффективного развертывания кластеров Kubernetes и с учетом масштабируемости.

Операция развертывания создает несколько виртуальных машин Linux или Windows и объединяет их для создания кластеров Kubernetes.

Примечание.

Чтобы повысить надежность системы, при использовании нескольких общих томов кластера (CSVS) в кластере данные виртуальной машины по умолчанию автоматически распределяются по всем доступным CSV в кластере. Это гарантирует, что приложения сохраняются в случае сбоя CSV. Это относится только к новым установкам (а не к обновлениям).

Развернутая система готова получать стандартные рабочие нагрузки Kubernetes, масштабировать эти рабочие нагрузки или даже масштабировать количество виртуальных машин и количество кластеров вверх и вниз по мере необходимости.

Кластер Служба Azure Kubernetes имеет следующие компоненты:

  • Кластер управления (также известный как узел AKS) предоставляет основной механизм оркестрации и интерфейс для развертывания одного или нескольких кластеров рабочей нагрузки.
  • Кластеры рабочих нагрузок (также называемые целевыми кластерами) — это место, где развертываются контейнерные приложения.

Иллюстрация технической архитектуры службы Azure Kubernetes на Windows Server.

Управление AKS на Windows Server

Вы можете управлять AKS с помощью следующих параметров управления:

  • Windows Admin Center предлагает интуитивно понятный пользовательский интерфейс для оператора Kubernetes для управления жизненным циклом кластеров.
  • Модуль PowerShell упрощает загрузку, настройку и развертывание AKS. Модуль PowerShell также поддерживает развертывание и настройку других кластеров рабочей нагрузки и перенастройку существующих.

Кластер управления

При создании кластера Kubernetes автоматически создается и настраивается кластер управления. Этот кластер управления отвечает за подготовку кластеров рабочих нагрузок и управление ими, где выполняются рабочие нагрузки. Кластер управления включает следующие основные компоненты Kubernetes:

  • Сервер API: сервер API — это способ предоставления базовых API Kubernetes. Этот компонент обеспечивает взаимодействие с средствами управления, такими как Windows Admin Center, модули PowerShell или kubectl.
  • Подсистема балансировки нагрузки: подсистема балансировки нагрузки — это отдельная выделенная виртуальная машина Linux с правилом балансировки нагрузки для сервера API кластера управления.

Кластер рабочей нагрузки

Кластер рабочей нагрузки — это высокодоступное развертывание Kubernetes с помощью виртуальных машин Linux для запуска компонентов плоскости управления Kubernetes и рабочих узлов Linux. Виртуальные машины на основе Windows Server Core используются для создания рабочих узлов Windows. Существует один или несколько кластеров рабочей нагрузки, управляемых одним кластером управления.

Компоненты кластера рабочей нагрузки

Кластер рабочей нагрузки содержит множество компонентов, описанных в следующих разделах.

Уровень управления

  • СЕРВЕР API: сервер API позволяет взаимодействовать с API Kubernetes. Этот компонент обеспечивает взаимодействие с средствами управления, такими как Windows Admin Center, модули PowerShell или kubectl.
  • Etcd: Etcd — это распределенное хранилище значений ключей, которое хранит данные, необходимые для управления жизненным циклом кластера. Он сохраняет состояние плоскости управления.

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

Подсистема балансировки нагрузки — это виртуальная машина под управлением Linux и HAProxy + KeepAlive для предоставления служб балансировки нагрузки для кластеров рабочих нагрузок, развернутых кластером управления. Для каждого кластера рабочей нагрузки AKS добавляет по крайней мере одну виртуальную машину подсистемы балансировки нагрузки. Любая служба Kubernetes типа LoadBalancer , созданного в кластере рабочей нагрузки, в конечном итоге создает правило балансировки нагрузки на виртуальной машине.

Рабочие узлы

Чтобы запускать приложения и вспомогательные службы, вам нужен узел Kubernetes. Кластер рабочей нагрузки AKS имеет один или несколько рабочих узлов. Рабочие узлы действуют как виртуальные машины (VMs), которые выполняют компоненты узлов Kubernetes и размещают pod'ы и службы, составляющие нагрузку приложения.

Существуют основные компоненты рабочей нагрузки Kubernetes, которые можно развернуть в кластерах рабочих нагрузок AKS, таких как модули pod и развертывания.

Поды

Kubernetes использует поды для запуска экземпляра вашего приложения. Каждый pod соответствует одному экземпляру приложения. Как правило, модули pod имеют сопоставление 1:1 с контейнером, хотя существуют расширенные сценарии, в которых модуль pod может содержать несколько контейнеров. Эти pod с несколькими контейнерами планируются вместе на одном узле и позволяют контейнерам разделять связанные ресурсы. Дополнительные сведения см. в модулях Kubernetes и жизненном цикле подов Kubernetes.

Развертывания

Развертывание обозначает один или несколько идентичных pod, управляемых контроллером развертывания Kubernetes. Развертывание определяет количество реплик (pod), которые необходимо создать, а планировщик Kubernetes гарантирует, что если pod или узлы сталкиваются с проблемами, дополнительные pod распределяются на здоровых узлах. Дополнительные сведения см. в документации по развертываниям Kubernetes.

StatefulSet и DaemonSet

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

  • StatefulSets: StatefulSet аналогичен развертыванию, поскольку создаются и управляются один или несколько идентичных pod. Реплики в StatefulSet соответствуют упорядоченному, последовательному подходу к развертыванию, масштабированию, обновлению и завершению. При использовании StatefulSet (по мере перепланирования реплик) соглашение об именовании, а также имена сети и хранилище сохраняются. Реплики в StatefulSet распределены и запускаются на любом доступном узле в кластере Kubernetes. Если необходимо убедиться, что по крайней мере один pod в наборе выполняется на узле, вместо этого можно использовать DaemonSet. Для получения дополнительной информации см. Kubernetes StatefulSets.
  • DaemonSets: для определенной коллекции журналов или мониторинга может потребоваться запустить заданный модуль pod на всех или выбранных узлах. DaemonSet снова используется для развертывания одного или нескольких идентичных подов, но контроллер DaemonSet гарантирует, что каждый указанный узел запускает экземпляр этого пода. Для получения дополнительной информации см. Kubernetes DaemonSets.

Пространства имен

Ресурсы Kubernetes, такие как поды и развертывания, логически сгруппированы в пространство имён. Эти группировки позволяют логически разделить кластеры рабочей нагрузки и ограничить доступ к созданию, просмотру или управлению ресурсами. Например, вы можете создать отдельные пространства имен для разных бизнес-подразделений. Пользователи смогут взаимодействовать только с ресурсами из назначенных им пространств имен. Дополнительные сведения см. в пространствах имен Kubernetes.

При создании кластера службы Azure Kubernetes в AKS на Windows Server доступны следующие пространства имен:

  • по умолчанию: пространство имен, в котором модули pod и развертывания создаются по умолчанию, если они не указаны. В небольших средах вполне допустимо развертывать все приложения в пространстве имен по умолчанию, не создавая дополнительные логические разделы. Если при взаимодействии с API Kubernetes, например, через kubectl get pods, не указано конкретное пространство имен, используется пространство имен по умолчанию.
  • kube-system: пространство имен, в котором существуют основные ресурсы, такие как сетевые функции, такие как DNS и прокси-сервер, или панель мониторинга Kubernetes. Обычно вам не нужно развертывать приложения в этом пространстве имен.
  • kube-public: пространство имен обычно не используется, но может использоваться для ресурсов, видимых во всем кластере, и может просматриваться любым пользователем.

Секреты

Секреты Kubernetes позволяют хранить конфиденциальные данные и управлять ими, такими как пароли, маркеры OAuth и ключи Secure Shell (SSH). По умолчанию Kubernetes хранит секреты как незашифрованные строки в кодировке Base64, и их можно получить как обычный текст любым пользователем с доступом к API. Дополнительные сведения см. в разделе "Секреты Kubernetes".

постоянные тома.

Постоянный том — это ресурс хранения в кластере Kubernetes, который был либо заранее создан администратором, либо динамически создан с помощью классов хранения. Чтобы использовать постоянные тома, pod запрашивает доступ с помощью PersistentVolumeClaim. Дополнительные сведения см. в разделе "Постоянные тома".

Развертывания смешанной ОС

Если данный кластер рабочей нагрузки состоит из рабочих узлов Linux и Windows, его необходимо запланировать на ОС, которая может поддерживать подготовку рабочей нагрузки. Kubernetes предлагает два механизма для обеспечения того, чтобы рабочие нагрузки приземлились на узлах с целевой операционной системой:

  • Селектор узлов — это простое поле в спецификации pod, которое ограничивает выполнение модулей pod только на здоровые узлы, соответствующие операционной системе.
  • Ограничения и терпимые элементы работают вместе, чтобы гарантировать, что модули pod не запланированы на узлы непреднамеренно. Узел может быть помечен, чтобы не принимать модули, которые не содержат явного допуска его метки в спецификации pod.

Дополнительные сведения см. в разделах селекторы узлов и таинты и толерантности.

Следующие шаги

В этой статье вы узнали об архитектуре кластера AKS в Windows Server и компонентах кластера рабочей нагрузки. Дополнительные сведения об этих понятиях см. в следующих статьях: