В этом сценарии показано, как разработать и реализовать базовую архитектуру для службы Microsoft Azure Kubernetes (AKS), работающей в локальной среде Azure.
В этой статье содержатся рекомендации по сети, безопасности, идентификации, управлению и мониторингу кластера на основе бизнес-требований организации. Это часть набора рекомендаций по архитектуре двух статей. Ознакомьтесь с рекомендациями по проектированию сети.
Внимание
Сведения в этой статье относятся к AKS в Azure Stack HCI, версии 22H2 и AKS-HCI в Windows Server. Последняя версия AKS работает в Azure Stack HCI версии 23H2. Дополнительные сведения о последней версии см. в AKS в ОС Azure Stack HCI версии 23H2.
Архитектура
На следующем рисунке показана базовая архитектура для службы Azure Kubernetes в локальном или windows Server 2019/2022 отказоустойчивых кластерах центра обработки данных:
Скачайте файл Visio для этой архитектуры.
Архитектура состоит из следующих компонентов и возможностей:
- Azure Stack HCI версии 22H2. Решение кластера гиперконвергентной инфраструктуры (HCI), в котором размещаются виртуализированные рабочие нагрузки Windows и Linux и их хранилище в гибридной локальной среде. Локальный экземпляр Azure реализуется в виде кластера 2-8 узлов.
- Службе Azure Kubernetes (AKS) в локальнойAzure. Локальная реализация AKS, которая автоматизирует выполнение контейнерных приложений в большом масштабе.
- Azure Arc. Облачная служба, которая расширяет модель управления на основе Azure Resource Manager до ресурсов, отличных от Azure, включая виртуальные машины, не являющиеся виртуальными машинами Azure, кластерами Kubernetes и контейнерными базами данных.
- Политика Azure. Облачная служба, которая помогает применять стандарты организации и оценивать соответствие в масштабе путем оценки ресурсов Azure (включая Arc) свойств этих ресурсов бизнес-правилам. Эти стандарты также включают Политика Azure для Kubernetes, которые применяют политики к рабочим нагрузкам, работающим в кластере.
- Azure Monitor. Облачная служба, которая обеспечивает максимальную доступность и производительность приложений и служб, предоставляя комплексное решение для сбора, анализа и действия с телеметрией из облачных и локальных сред.
- Microsoft Defender для облака. Единая система управления безопасностью инфраструктуры, которая повышает уровень безопасности центров обработки данных и обеспечивает расширенную защиту от угроз в гибридных рабочих нагрузках в облаке и локальной среде.
- Служба автоматизации Azure. Предоставляет облачную службу автоматизации и конфигурации, которая поддерживает согласованное управление в azure и средах, отличных от Azure.
- Velero. Средство с открытым исходным кодом, которое поддерживает резервное копирование по запросу и запланированное резервное копирование и восстанавливает все объекты в кластере Kubernetes.
- Хранилище BLOB-объектов Azure. Масштабируемое и безопасное хранилище объектов для облачных рабочих нагрузок, архивов, озер данных, высокопроизводительных вычислений и машинного обучения.
Компоненты
- Azure Stack HCI версии 22H2
- Службе Azure Kubernetes (AKS) в локальном Azure
- Windows Admin Center;
- Подписка Azure
- Azure Arc
- Управление доступом на основе ролей в Azure (Azure RBAC).
- Azure Monitor
- Microsoft Defender для облака
Подробности сценария
Потенциальные варианты использования
- Реализуйте высокодоступные рабочие нагрузки на основе контейнеров в локальной реализации Kubernetes AKS.
- Автоматизация запуска контейнерных приложений в большом масштабе.
- Снижение общей стоимости владения (TCO) с помощью решений, сертифицированных корпорацией Майкрософт, облачной автоматизации, централизованного управления и централизованного мониторинга.
Сертифицированное оборудование
Используйте локально сертифицированное оборудование Azure, которое обеспечивает безопасную загрузку, интерфейс встроенного ПО United Extensible (UEFI) и параметры доверенного платформенного модуля (TPM). Требования к вычислениям зависят от приложения и количества рабочих узлов, которые выполняются в AKS в кластере. Используйте несколько физических узлов для развертывания локального или по крайней мере двух узлов отказоустойчивого кластера Windows Server Datacenter для обеспечения высокой доступности. Требуется, чтобы все серверы имели одинаковый производитель и модель, используя 64-разрядный класс Intel Nehalem, AMD EPYC или более поздний совместимый процессор с преобразованием адресов второго уровня (SLAT).
Стратегии развертывания кластера
AKS упрощает локальное развертывание Kubernetes, предоставляя мастера или командлеты PowerShell, которые можно использовать для настройки Kubernetes и важных локальных надстроек Azure. Кластер AKS содержит следующие компоненты в локальной среде Azure:
- Кластер управления. Разверните кластер управления на высокодоступной виртуальной машине, работающей в локальном или локальном кластере Windows Server 2019/2022 Datacenter. Кластер управления отвечает за развертывание и управление несколькими кластерами рабочих нагрузок и включает следующие компоненты:
- Сервер API. Взаимодействует с инструментами управления.
- Подсистема балансировки нагрузки. Управляет правилами балансировки нагрузки для сервера API кластера управления.
- Кластеры рабочей нагрузки. Реализуйте компоненты уровня управления высокой доступности и компоненты рабочего узла. Контейнерные приложения выполняются в кластере рабочей нагрузки. Чтобы обеспечить изоляцию приложений, можно развернуть до восьми кластеров рабочих нагрузок. Кластер рабочей нагрузки состоит из следующих компонентов:
- Плоскость управления. Выполняется в дистрибутиве Linux и содержит компоненты сервера API для взаимодействия с API Kubernetes и распределенного хранилища значений ключей и т. д. для хранения всех конфигураций и данных кластера.
- Подсистема балансировки нагрузки. Выполняется на виртуальной машине Linux и предоставляет службы с балансировкой нагрузки для кластера рабочей нагрузки.
- Рабочие узлы. Запустите операционную систему Windows или Linux, включающую контейнерные приложения.
- Ресурсы Kubernetes. Модули Pod представляют один экземпляр приложения, который обычно сопоставляет 1:1 с контейнером, но некоторые модули pod могут содержать несколько контейнеров. Развертывания представляют один или несколько идентичных модулей pod. Модули pod и развертывания логически группируются в пространство имен, которое управляет доступом к управлению ресурсами.
Требования к сети
Kubernetes предоставляет уровень абстракции для виртуальных сетей путем подключения узлов Kubernetes к виртуальной сети. Он также предоставляет входящий и исходящий подключения для модулей pod через компонент kube-proxy . Локальная платформа Azure обеспечивает дальнейшее упрощение развертывания, настроив виртуальную машину подсистемы балансировки нагрузки HAProxy.
Примечание.
Сведения о разработке и реализации сетевых концепций развертывания узлов AKS в кластерах Azure Local и Windows Server см. в второй статье этой серии, архитектуре сети.
В архитектуре используется виртуальная сеть, которая выделяет IP-адреса с помощью одного из следующих параметров сети:
- Статические IP-сети. Использует статический, определенный пул адресов для всех объектов в развертывании. Он добавляет дополнительные преимущества и гарантирует, что рабочая нагрузка и приложение всегда доступны. Рекомендуем использовать этот метод.
- Сеть DHCP. Выделяет динамические IP-адреса узлам Kubernetes, базовым виртуальным машинам и подсистемам балансировки нагрузки с помощью dhcp-сервера динамической конфигурации узлов.
Виртуальный пул IP-адресов — это диапазон зарезервированных IP-адресов, используемых для выделения IP-адресов на сервер API кластера Kubernetes и служб Kubernetes.
Используйте Project Calico для Kubernetes для получения других сетевых функций, таких как политика сети и управление потоками.
Требования к системе хранения данных
Для каждого сервера в кластере используйте одинаковые типы дисков, которые имеют одинаковый размер и модель. Локальная служба Azure работает с подключенным к сети последовательным расширенным технологическим вложением (SATA), последовательным присоединенным SCSI (SAS), неизменяемым экспрессом памяти (NVMe) или дисками постоянной памяти, которые физически подключены к одному серверу. Для томов кластера HCI использует программно-определяемую технологию хранения (Локальные дисковые пространства) для объединения физических дисков в пуле носителей для отказоустойчивости, масштабируемости и производительности. Приложения, которые выполняются в Kubernetes в локальной среде Azure, часто ожидают, что для них доступны следующие варианты хранения:
- Тома. Представляет способ хранения, извлечения и сохранения данных между модулями pod и жизненным циклом приложения.
- Постоянные тома. Ресурс хранилища, созданный и управляемый API Kubernetes, может существовать за пределами времени существования отдельного модуля pod.
Рассмотрите возможность определения классов хранилища для различных уровней и расположений для оптимизации затрат и производительности. Классы хранилища поддерживают динамическую подготовку постоянных томов и определяют восстановлениеPolicy , чтобы указать действие базового ресурса хранилища для управления постоянными томами при удалении модуля pod.
Управление AKS в Локальной среде Azure
Вы можете управлять AKS в Azure Local с помощью следующих параметров управления:
- Центр администрирования Windows. Предоставляет интуитивно понятный пользовательский интерфейс для оператора Kubernetes для управления жизненным циклом кластеров служб Azure Kubernetes в локальной среде Azure.
- PowerShell. Упрощает загрузку, настройку и развертывание AKS в Локальной среде Azure. Модуль PowerShell также поддерживает развертывание, настройку других кластеров рабочих нагрузок и перенастройку существующих.
Требования к Active Directory
Интеграция AKS в отказоустойчивых кластерах Центра обработки данных Azure или Windows Server Datacenter с средой доменных служб Active Directory (AD DS) для оптимального управления. По возможности используйте отдельные организационные подразделения для серверов и служб AKS в Azure Local, чтобы обеспечить более детальный контроль доступа и разрешений. Интеграция Active Directory со службой Azure Kubernetes в Azure Local позволяет пользователю на компьютере, присоединенном к домену Windows, подключаться к серверу API (с kubectl), используя учетные данные единого входа.
Рекомендации
Следующие рекомендации применимы для большинства ситуаций. Следуйте рекомендациям, если у вас нет определенного требования, которое переопределяет их.
Интеграция AKS в развертыванияХ HCI с Azure Arc
Чтобы свести к минимуму TCO, интегрируйте развертывания AKS с Azure Arc. Рассмотрите возможность использования следующих служб Azure:
- Аналитика контейнеров Azure Monitor. Отслеживает производительность рабочих нагрузок контейнеров, работающих в кластерах Linux и Windows. Он собирает метрики памяти и процессора из контроллеров, узлов и контейнеров через API метрик. С помощью аналитики контейнеров можно определить использование памяти и процессора, определить общую производительность pod, понять поведение кластера и настроить оповещения для упреждающего мониторинга.
- Возможности автоматизации. AKS предоставляет широкий спектр возможностей автоматизации, а обновления ОС в сочетании с обновлениями полного стека, включая встроенное ПО и драйверы, предоставляемые локальными поставщиками и партнерами Azure. Windows PowerShell можно запускать локально с одного из локальных компьютеров Azure или удаленно с компьютера управления. Интеграция с служба автоматизации Azure и Azure Arc упрощает широкий спектр сценариев автоматизации для виртуализированных и контейнерных рабочих нагрузок.
- Velero и Хранилище BLOB-объектов Azure. Velero — это средство с открытым исходным кодом, которое поддерживает резервное копирование по запросу, запланированное резервное копирование и восстановление всех объектов в кластере Kubernetes для всех ресурсов, определенных и хранящихся в базе данных etcd в качестве пользовательского определения ресурсов Kubernetes (CRD). Он обеспечивает резервное копирование ресурсов и томов Kubernetes для всего кластера или части кластера с помощью селекторов имен или меток. Сохраните резервный набор, созданный с помощью средства Velero, в учетной записи хранения Azure в контейнере BLOB-объектов.
- Служба Kubernetes с поддержкой Azure Arc. Предоставляет представление AKS в локальном экземпляре Azure Resource Manager. Развертывание агентов с поддержкой Azure Arc в пространстве имен Kubernetes для сбора журналов и метрик для сбора метаданных кластера, версии кластера и количества узлов и обеспечения оптимальной производительности агентов.
- Политика Azure. Развертывание и применение встроенных политик безопасности в кластере AKS с помощью Политика Azure. Вы также можете использовать определение пользовательской политики для принудительного применения GitOps, что является практикой объявления требуемого состояния конфигурации Kubernetes (развертывания, пространства имен и т. д.) в репозитории Git.
- Политика Azure для Kubernetes. Управление внутренними политиками кластеров, реализованными Gatekeeper, развертывает определение политики в кластере в качестве шаблона ограничений и сообщает о состоянии соответствия кластеров Kubernetes из одного места.
- Azure RBAC. Используйте для назначения ролей и управления доступом к Kubernetes с поддержкой Azure Arc.
Рекомендации
Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.
Надежность
- Реализуйте высокодоступную виртуальную машину для кластера управления и несколько узлов в кластере Kubernetes, чтобы обеспечить минимальный уровень доступности для рабочих нагрузок.
- Резервное копирование и восстановление кластеров рабочих нагрузок с помощью Velero и Хранилище BLOB-объектов Azure. Определите цели доступности и восстановления в соответствии с требованиями бизнеса.
- Развертывания AKS используют отказоустойчивую кластеризацию и динамическую миграцию для обеспечения высокой доступности и отказоустойчивости. Динамическая миграция — это функция Hyper-V, которая позволяет прозрачно перемещать виртуальные машины с одного узла Hyper-V на другой без предполагаемого простоя.
- Настройте развертывания для использования функций Kubernetes, таких как развертывания, сопоставление сходства и реплики, чтобы обеспечить устойчивость модулей pod в сценариях сбоя.
- Необходимо убедиться, что службы, на которые ссылается раздел "Архитектура", поддерживаются в регионе, в котором развертывается Azure Arc.
- Рассмотрите возможность ограничения использования общедоступных образов контейнеров и извлечения только из реестров контейнеров, для которых у вас есть контроль над соглашением об уровне обслуживания, например ACR.
Безопасность
Сосредоточьтесь на всем стеке путем защиты узла и контейнеров.
Безопасность инфраструктуры
- Используйте локальное сертифицированное оборудование Azure, которое предоставляет параметры безопасной загрузки, UEFI и доверенного платформенного модуля. Эти технологии в сочетании с безопасностью на основе виртуализации (VBS) помогают защитить рабочие нагрузки с учетом безопасности. Посетите локальные решения Azure для проверенных решений.
- Используйте безопасную загрузку, чтобы убедиться, что сервер загружает только программное обеспечение, доверенное изготовителем исходного оборудования.
- Используйте UEFI для управления процессом загрузки сервера.
- Используйте TPM для хранения криптографических ключей и изоляции всех аппаратных функций, связанных с безопасностью.
- Шифрование диска BitLocker позволяет шифровать неактивных томов Локальные дисковые пространства.
- Настройте политики сети Calico для определения правил сетевой изоляции между контейнерами.
- Для повышения требований к безопасности рекомендуется развернуть кластер рабочей нагрузки на выделенном сервере Windows.
- Используйте Microsoft Defender для облака, доступную через Windows Admin Center, для централизованного управления параметрами безопасности для серверов и кластеров. Он обеспечивает защиту от угроз для кластеров Kubernetes с поддержкой Arc. Расширение Microsoft Defender для облака собирает данные из узлов в кластере и отправляет его в серверную часть Azure Defender для Kubernetes в облаке для дальнейшего анализа.
- Безопасное взаимодействие с сертификатами.
- Смена ключей шифрования хранилища секретов Kubernetes (etcd) с помощью подключаемого модуля сервера управления ключами (KMS).
Безопасность приложений
- Используйте расширение поставщика секретов Azure Key Vault в AKS в локальной среде Azure для дальнейшей защиты секретов, используемых различными приложениями, путем хранения их в службе Azure Key Vault.
- Используйте надстройку Open Service Mesh AKS для защиты обмена данными между службами, обеспечивая взаимное подключение TLS (mTLS). Эту надстройку также можно использовать для определения и выполнения подробных политик управления доступом для служб.
- Используйте Политика Azure для Kubernetes для применения политик безопасности кластера, таких как без привилегированных модулей pod.
- Используйте Реестр контейнеров Azure, содержащую сканирование уязвимостей в репозитории контейнеров.
- Используйте учетные записи безопасности, управляемые группой, для рабочих нагрузок Windows с узлом, не присоединенным к домену. (Применимо только для Windows Server.)
Безопасность контейнеров
- Заклините среду узла и управляющей программы, удалив ненужные службы.
- Сохраняйте секреты из образов и подключайте их только через подсистему оркестрации контейнеров.
- Защита образов в Реестр контейнеров Azure, поддерживающей сканирование уязвимостей и RBAC.
- Используйте изоляцию контейнеров и избегайте выполнения контейнеров в привилегированном режиме, чтобы предотвратить эскалацию привилегий злоумышленниками, если контейнер скомпрометирован.
Оптимизация затрат
- Используйте калькулятор цен Azure для оценки затрат на службы, используемые в архитектуре. В разделе оптимизации затрат в Microsoft Azure Well-Architected Framework описаны другие рекомендации. Дополнительные сведения см. в разделе о ценах.
- Рекомендуется реализовать гиперпоток на физическом компьютере, чтобы оптимизировать затраты, так как единица выставления счетов AKS является виртуальной ядром.
Эффективность работы
- Мастер создания кластера. Упрощенная подготовка и управление с помощью Центра администрирования Windows. Мастер создания кластера в Windows Admin Center предоставляет управляемый мастером интерфейс, который поможет вам создать локальный экземпляр Azure. Мастер создания кластера — это компромисс для упрощения и создания сценариев развертывания, которые можно управлять версиями для аудита и повторяемости в нескольких развертываниях. Аналогичным образом Windows Admin Center упрощает процесс управления локальными виртуальными машинами Azure.
- Azure Arc. Интеграция с Azure Arc или рядом служб Azure, которые обеспечивают дополнительные возможности управления, обслуживания и устойчивости (например, Azure Monitor и Log Analytics).
- GitOps. Вместо ручной настройки компонентов Kubernetes используйте автоматизированное средство для применения конфигураций к кластеру Kubernetes, так как эти конфигурации проверяются в исходном репозитории. Этот процесс часто называется GitOps, а популярные решения GitOps для Kubernetes включают Flux и Argo CD. В этой архитектуре рекомендуется использовать расширение GitOps, предоставленное корпорацией Майкрософт, которое основано на Flux.
- Сетка Open Service (OSM) с поддержкой Azure Arc. Упрощенная, расширяемая, облачная сетка служб, которая позволяет пользователям равномерно управлять, защищать и получать встроенные функции наблюдения для высокодинамых сред микрослужб.
Оптимизация производительности
- Используйте локально сертифицированное оборудование Azure для улучшения времени и производительности приложений, упрощенного управления и операций, а также снижения общей стоимости владения.
- Общие сведения об ограничениях AKS на локальных ресурсах Azure. Корпорация Майкрософт поддерживает развертывание AKS в Azure Stack с максимальным количеством физических серверов на кластер, восемь кластеров Kubernetes и 200 виртуальных машин.
- Масштабирование AKS в Azure Local зависит от количества рабочих узлов и целевых кластеров. Чтобы правильно определить оборудование для рабочих узлов, необходимо предвидеть количество модулей pod, контейнеров и рабочих узлов в целевом кластере. Убедитесь, что для планового и незапланированного сбоя зарезервировано не менее 15% локальной емкости Azure. Для повышения эффективности производительности вычислительные ресурсы эффективно используются для удовлетворения системных требований, а также для поддержания этой эффективности по мере изменения спроса и технологий. Общее правило заключается в том, что если один узел переходит в автономный режим во время обслуживания или во время незапланированного сбоя, остальные узлы могут иметь достаточно емкости для управления повышенной нагрузкой.
- Рекомендуется увеличить размер виртуальной машины подсистемы балансировки нагрузки, если вы используете множество служб Kubernetes в каждом целевом кластере.
- AKS в Azure Local распределяет рабочие узлы для каждого пула узлов в целевом кластере с помощью логики локального размещения Azure.
- Планирование резервирования IP-адресов для настройки узлов AKS, кластеров рабочих нагрузок, серверов API кластера, служб Kubernetes и служб приложений. Корпорация Майкрософт рекомендует резервировать не менее 256 IP-адресов для развертывания AKS в локальной среде Azure.
- Рассмотрите возможность реализации контроллера входящего трафика, работающего на уровне 7, и использует более интеллектуальные правила для распределения трафика приложения.
- Реализуйте оптимизацию производительности сети для распределения пропускной способности трафика.
- Используйте ускорение графической обработки (GPU) для обширных рабочих нагрузок.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Основные авторы:
- Лиза ДенБесте | Диспетчер программ управления проектами
- Кенни Сложнее | Диспетчер проектов
- Майк Костерсиц | Руководитель основного диспетчера программ
- Мег Олсен | Основной
- Нейт Уотерс | Менеджер по маркетингу продуктов
Другие участники:
- Уолтер Оливер | Старший менеджер по программам
Следующие шаги
Связанные ресурсы
- архитектура сети для AKS в локальной Azure