Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes, которую можно использовать для развертывания контейнерных приложений и управления ими. Как и в других управляемых службах, AKS выгружает большую часть операционных расходов в Azure, обеспечивая высокий уровень доступности, масштабируемость и переносимость функций рабочей нагрузки.
В этой статье предполагается, что в качестве архитектора вы рассмотрели дерево решений в вычислениях и выбрали AKS в качестве вычислительной платформы для вашей рабочей нагрузки. В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами столпов платформы Well-Architected Azure.
Область технологий
В этом обзоре рассматриваются взаимосвязанные решения для следующих ресурсов Azure:
- AKS
При обсуждении рекомендаций Well-Architected Framework для AKS важно различать кластер и рабочую нагрузку. Рекомендации по кластеру — это общая ответственность между администратором кластера и их поставщиком ресурсов, а рекомендации по рабочей нагрузке — это домен разработчика. В этой статье рассматриваются соображения и рекомендации для каждой из этих ролей.
Note
Ниже приведен контрольный список проектирования и список рекомендаций, указывающих , подходит ли каждый выбор к архитектуре кластера , архитектуре рабочей нагрузки или обоим.
Reliability
Цель компонента надежности заключается в обеспечении непрерывной функциональности путем создания достаточной устойчивости и возможности быстрого восстановления после сбоев.
принципы проектирования надежности обеспечивают высокоуровневую стратегию проектирования, применяемую для отдельных компонентов, системных потоков и системы в целом.
Контрольный список разработки рабочей нагрузки
Начните вашу стратегию проектирования на основе контрольного списка обзора для надежности. Определите, насколько это соответствует вашим бизнес-требованиям, принимая во внимание функции AKS и его зависимости. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
(Кластер) Создавать избыточность для повышения устойчивости. Используйте зоны доступности для кластеров AKS в рамках вашей стратегии устойчивости, чтобы увеличить доступность при развертывании в одном регионе. Многие регионы Azure предоставляют зоны доступности. Зоны достаточно близки, чтобы иметь между ними подключения с низкой задержкой, но достаточно далеко друг от друга, чтобы снизить вероятность того, что локальные сбои будут влиять на несколько зон.
Для критически важных рабочих нагрузок разверните несколько кластеров в разных регионах Azure. Географически распределяя кластеры AKS, можно добиться более высокой устойчивости и свести к минимуму последствия региональных сбоев. Стратегия многорегионирования помогает повысить доступность и обеспечить непрерывность бизнес-процессов. Рабочие нагрузки, подключенные к Интернету, должны использовать Azure Front Door или Azure Traffic Manager для глобальной маршрутизации трафика между кластерами AKS. Дополнительные сведения см. в статье "Стратегия многорегионирования".
Запланируйте адресное пространство IP, чтобы обеспечить надежное масштабирование и обработку трафика при отказоустойчивости в топологиях с несколькими кластерами.
(Кластер и рабочая нагрузка) отслеживать надежность и общие показатели работоспособности кластера и рабочих нагрузок. Собирать журналы и метрики для мониторинга работоспособности рабочей нагрузки, выявления тенденций производительности и надежности и устранения неполадок. Ознакомьтесь с рекомендациями по мониторингу Kubernetes с помощью Azure Monitor и с руководством Well-Architected по моделированию работоспособности для рабочих нагрузок, чтобы получить помощь в разработке решения для мониторинга надежности и работоспособности вашей AKS-системы.
Убедитесь, что рабочие нагрузки созданы для поддержки горизонтального масштабирования и предоставляют отчеты о готовности и состоянии приложения.
(Кластер и рабочая нагрузка) Размещайте модули pod приложений в пользовательских узловых пулах. Изолируя системные pod от рабочих нагрузок приложений, вы помогаете гарантировать, что основные службы AKS остаются не затронутыми требованиями к ресурсам или потенциальными проблемами, вызванными рабочей нагрузкой в пользовательских узловых пулах.
Убедитесь, что рабочая нагрузка выполняется в пулах узлов для пользователей и выберите подходящий размер SKU. Как минимум, включите два узла для пулов пользовательских узлов и три узла для пула системных узлов.
(Кластер и рабочая нагрузка) Учитывайте соглашение об уровне обслуживания AKS (SLA) в ваши целевые показатели доступности и восстановления. Чтобы определить целевые показатели надежности и восстановления для кластера и рабочей нагрузки, следуйте инструкциям в Рекомендациях по определению показателей надежности. Затем сформулируйте конструкцию, которая соответствует этим целям.
(Кластер и рабочая нагрузка) Защитите службу кластера AKS с помощью Azure Backup, сохраняя точки восстановления в хранилище резервного копирования и выполняя восстановление во время любого сценария аварии. Чтобы выполнить резервное копирование и восстановление контейнерных приложений и данных, работающих в кластерах AKS, следуйте инструкциям в обзоре резервного копирования AKS для настройки защиты.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Кластер и рабочая нагрузка) Управление планированием pod с помощью селекторов узлов и сходства. В AKS планировщик Kubernetes может логически изолировать рабочие нагрузки по оборудованию в узле. В отличие от толерации, модули pod, у которых нет селектора селектора соответствующего узла, можно запланировать на помеченных узлах, но приоритет присваивается модулям pod, определяющим соответствующий селектор узлов. |
Свойство привязки к узлам обеспечивает большую гибкость, позволяя указать, что происходит, если pod не может быть сопоставлен с узлом. |
| (Кластер) Выберите соответствующий сетевой плагин на основе требований к сети и размера кластера. Различные сетевые плагины предоставляют разный уровень функциональности. Сетевой интерфейс контейнеров Azure (Azure CNI) требуется для конкретных сценариев, таких как пулы узлов под управлением Windows, некоторые требования к сети и политики сети Kubernetes. Для расширенного управления IP-адресами рекомендуется использовать Azure CNI со статическим выделением блоков , что улучшает планирование сети и уменьшает нехватку IP-адресов при сохранении интеграции безопасности сети с правилами брандмауэра и политиками сети. Дополнительные сведения см. в статье Kubenet и Azure CNI. |
Правильный сетевой подключаемый модуль может помочь обеспечить лучшую совместимость и производительность. Выделение статических блоков обеспечивает согласованные диапазоны IP-адресов для повышения конфигурации политики безопасности и планирования емкости. |
| (Кластер и рабочая нагрузка) Используйте соглашение об уровне доступности SLA AKS для кластеров промышленного уровня. | Рабочая нагрузка может поддерживать более высокие целевые показатели доступности из-за более высоких гарантий доступности конечной точки сервера API Kubernetes для кластеров AKS. |
| (Кластер) Используйте зоны доступности для повышения устойчивости в регионе Azure путем распределения узлов агента AKS в физически отдельных центрах обработки данных. Если существуют требования к колокейшну, используйте развертывание AKS на основе масштабируемых наборов виртуальных машин в одной зоне или используйте группы размещения близкого взаимодействия, чтобы свести к минимуму межузловую задержку. |
Распространив пулы узлов по нескольким зонам, узлы одного пула продолжают работать, даже если другая зона выйдет из строя. |
| (Кластер и рабочая нагрузка) Определите запросы и ограничения ресурсов pod в манифестах развертывания приложений. Обеспечьте выполнение этих ограничений с помощью Azure Policy. | Ограничения ресурсов ЦП и памяти контейнера необходимы для предотвращения нехватки ресурсов в кластере Kubernetes. |
| (Кластер и рабочая нагрузка) Не изолируйте пул системных узлов от рабочих нагрузок приложений. Для пулов системных узлов требуется SKU виртуальной машины с как минимум 2 виртуальными ЦП и 4 ГБ памяти. Рекомендуется использовать 4 виртуальных ЦП или более. Дополнительные сведения см. в разделе пулы узлов системы и пользователя. |
Пул узлов системы размещает критически важные pod, необходимые для плоскости управления вашего кластера. Изолируя эти модули системы от рабочих нагрузок приложений, вы помогаете гарантировать, что основные службы остаются не затронутыми требованиями к ресурсам или потенциальными проблемами, вызванными рабочей нагрузкой. |
| (Кластер и рабочая нагрузка) Отделите приложения к выделенным пулам узлов на основе конкретных требований и должны быть намерены об этом сегментации. Избегайте большого количества пулов узлов, чтобы сократить затраты на управление. Например, можно выделить несколько номеров SKU виртуальных машин в одном пуле узлов , если они соответствуют одному и тому же требованию. |
Приложения могут совместно использовать ту же конфигурацию и нуждаются в виртуальных машинах с поддержкой GPU, ЦП или оптимизированных для памяти виртуальных машинах или возможности масштабирования до нуля. Делегируя пулы узлов конкретным приложениям, вы можете обеспечить, что каждое приложение получает необходимые ресурсы без перерасхода или недостаточного использования ресурсов. |
| (Кластер) Используйте шлюз NAT для кластеров, выполняющих рабочие нагрузки, которые делают множество одновременных исходящих подключений. | Шлюз Azure NAT поддерживает надежный исходящий трафик в масштабе и помогает избежать проблем с надежностью, применяя ограничения Azure Load Balancer к высокому параллельному исходящему трафику. |
| (Кластер и рабочая нагрузка) Используйте Azure Backup для обеспечения защиты кластера AKS и восстановления в альтернативных регионах в случае аварии. Azure Backup поддерживает операции резервного копирования и восстановления контейнерных приложений и данных, выполняемых как для состояния кластера, так и для данных приложения. Вы можете использовать резервные копии в региональном сценарии аварии и восстановить резервные копии. |
Azure Backup с помощью Службы Azure Kubernetes (AKS) предлагает полностью управляемое, масштабируемое, безопасное и экономичное решение. Повышает надежность рабочей нагрузки без сложностей настройки и поддержания инфраструктуры резервного копирования. |
Security
Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.
Принципы проектирования безопасности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию AKS.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования на основе контрольного списка для проверки проектирования безопасности и выявления уязвимостей и элементами управления, чтобы улучшить уровень безопасности. Ознакомьтесь с понятиями безопасности AKS и оцените рекомендации по обеспечению безопасности на основе тестовых показателей CIS Kubernetes. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
(Кластер) Интеграция с идентификатором Microsoft Entra для управления удостоверениями и доступом. Централизованное управление удостоверениями для кластера с помощью идентификатора Microsoft Entra. Любые изменения в статусе учетной записи пользователя или группы автоматически обновляются при доступе к кластеру AKS. Определить идентификацию в качестве основного периметра безопасности. Разработчикам и владельцам приложений кластера Kubernetes нужен доступ к различным ресурсам.
Используйте управление доступом на основе ролей Kubernetes (RBAC) с идентификатором Microsoft Entra для наименее привилегированного доступа. Защита конфигурации и секретов путем минимизации выделения привилегий администратора.
(Кластер) Интеграция со средствами мониторинга безопасности и управления информацией о безопасности и событиями. Используйте Microsoft Defender для контейнеров с Microsoft Sentinel для обнаружения и быстрого реагирования на угрозы в кластерах и рабочих нагрузок, которые выполняются в них. Включите соединитель AKS для Microsoft Sentinel для потоковой передачи журналов диагностики AKS в Microsoft Sentinel.
(Кластер и рабочая нагрузка) Реализуйте сегментирование и сетевые элементы управления. Чтобы предотвратить кражу данных, убедитесь, что допускается только авторизованный и безопасный трафик, и ограничивается радиус воздействия нарушения безопасности.
Рассмотрите возможность использования частного кластера AKS, чтобы убедиться, что трафик управления кластерами на сервер API остается в частной сети. Или используйте список разрешений сервера API для общедоступных кластеров.
(Рабочая нагрузка) Использовать брандмауэр веб-приложения (WAF) для проверки входящего трафика для потенциальных атак. WAF может обнаруживать и устранять угрозы в режиме реального времени, чтобы блокировать вредоносный трафик, прежде чем он достигнет ваших приложений. Она обеспечивает надежную защиту от распространенных веб-атак, таких как внедрение SQL, межсайтовые скрипты и другие уязвимости проекта Open Web Application Security. Некоторые подсистемы балансировки нагрузки, такие как шлюз приложений Azure или Azure Front Door имеют интегрированный WAF.
(Рабочая нагрузка) Поддерживать защищённую цепочку поставок программного обеспечения затвержденной рабочей нагрузки. Убедитесь, что ваш конвейер непрерывной интеграции и доставки защищен с учётом проверки контейнеров.
(Кластер и рабочая нагрузка) реализовать дополнительную защиту для специализированных защищенных рабочих нагрузок. Если кластеру требуется выполнить конфиденциальную рабочую нагрузку, может потребоваться развернуть частный кластер. Ниже приведены некоторые примеры.
- Стандарт безопасности данных индустрии платежных карт (PCI-DSS 3.2.1): кластер AKS, регулируемый для PCI-DSS 3.2.1
- Поддержка и требования уровня влияния Министерства обороны США 5 (IL5) с AKS: требования к изоляции для Azure Government IL5.
(Кластер) Используйте расширенную безопасность из расширений кластера, управляемых в плоскости управления.Диспетчер расширений выполняется в управляемом Azure уровне управления, уменьшая область атак для рабочих узлов и упрощая требования к сети кластера при сохранении функциональных возможностей расширения. Это централизованное управление расширениями устраняет необходимость защиты и обслуживания компонентов расширения на рабочих узлах клиента.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Кластер) Используйте управляемые удостоверения в кластере. | Вы можете избежать затрат, связанных с управлением и поворотом принципов службы. |
| (Рабочая нагрузка) Используйте идентификатор нагрузки Microsoft Entra с AKS для доступа к защищённым ресурсам Microsoft Entra, таким как Azure Key Vault и Microsoft Graph, в вашей рабочей нагрузке. | Используйте идентификаторы рабочих нагрузок AKS для защиты доступа к ресурсам Azure с помощью средств управления доступом (RBAC) Microsoft Entra ID без необходимости управлять учетными данными прямо в вашем коде. |
| (Кластер) Используйте Microsoft Entra ID, чтобы пройти аутентификацию в Azure Container Registry из AKS. | С помощью идентификатора Microsoft Entra AKS может проходить проверку подлинности в реестре контейнеров без использования секретов imagePullSecrets. |
| (Кластер) Защита сетевого трафика на сервер API с помощью частного кластера AKS, если требования к рабочей нагрузке требуют более высокого уровня сегментации. | По умолчанию сетевой трафик между пулами узлов и сервером API проходит через основную сеть Microsoft. Используя частный кластер, вы можете убедиться, что сетевой трафик к серверу API остается только в частной сети. |
| (Кластер) Для общедоступных кластеров AKS используйте диапазоны IP-адресов, авторизованных сервером API. Включите такие источники, как общедоступные IP-адреса агентов сборки и развертывания, управление операционными процессами и точки исходящего трафика пулов узлов, например Брандмауэр Azure. | При использовании общедоступных кластеров можно значительно уменьшить область атаки кластера AKS, ограничив трафик, который может достичь сервера API кластеров. |
| (Кластер) Защитите сервер API с помощью RBAC идентификатора Microsoft Entra. Отключить локальные учетные записи для принудительного обеспечения доступа ко всем кластерам с помощью удостоверений, основанных на Microsoft Entra ID. |
Защита доступа к серверу API Kubernetes является одной из наиболее важных вещей, которые можно сделать для защиты кластера. Интеграция Kubernetes RBAC с идентификатором Microsoft Entra для управления доступом к серверу API. |
| (Кластер) Используйте сетевые политики Azure или Calico. | С помощью политик безопасности можно защитить и контролировать сетевой трафик между подами в кластере. Calico предоставляет более широкий набор функций, включая упорядочение политик и приоритет, правила отказа и более гибкие правила сопоставления. |
| (Кластер) Защита кластеров и модулей pod с помощью политики Azure. | Политика Azure может помочь применять масштабное принудительное применение и защитные меры в отношении кластеров централизованным и согласованным образом. Он также может управлять предоставлением функций модулю pod и определять, нарушает ли что-либо политику компании. |
| (Кластер) Безопасный доступ к ресурсам с помощью контейнера. Ограничьте доступ к действиям, которые могут выполнять контейнеры. Укажите наименьшее количество разрешений и избегайте использования корневого доступа или повышения привилегий. Сведения о контейнерах под управлением Linux см. в разделе Доступ к ресурсам с помощью встроенных функций безопасности Linux. |
Ограничивая разрешения и избегая использования корневой или привилегированной эскалации, вы помогаете снизить риск нарушений безопасности. Вы можете сделать так, чтобы, даже если контейнер скомпрометирован, потенциальный ущерб был сведен к минимуму. |
| (Кластер) Управляйте исходящим трафиком кластера, гарантируя, что исходящий трафик кластера проходит через точку безопасности сети, например брандмауэр Azure или HTTP-прокси. | Путем маршрутизации исходящего трафика через брандмауэр Azure или ПРОКСИ-сервер HTTP можно применять политики безопасности, которые предотвращают несанкционированный доступ и кражу данных. Этот подход также упрощает администрирование политик безопасности и упрощает применение согласованных правил во всем кластере AKS. |
| (Кластер) Настройте поддержку прокси-сервера HTTP для существующих кластеров AKS в средах, зависящих от прокси-сервера. Включите конфигурацию прокси-сервера HTTP для узлов AKS и модулей pod для интеграции с существующими архитектурами безопасности сети предприятия и требованиями к соответствию требованиям. |
Критически важно для финансовых услуг и других регулируемых отраслей, требующих передачи всего трафика через корпоративные прокси-серверы HTTP для проверки безопасности и мониторинга соответствия требованиям. Обеспечивает простую интеграцию с существующей инфраструктурой безопасности корпоративной сети. |
| (Кластер) Реализуйте поддержку пользовательского центра сертификации для установления отношений доверия между кластерами AKS и корпоративной инфраструктурой PKI. Настройте настраиваемый ЦС для включения доверия для частных реестров, прокси-серверов и брандмауэров в существующих платформах управления сертификатами организации. |
Важно для предприятий с внутренней инфраструктурой центра сертификации. Позволяет кластерам AKS доверять частным реестрам организации и внутренним службам при сохранении корпоративных политик безопасности и требований к соответствию. |
| (Кластер) Используйте идентификатор рабочей нагрузки Microsoft Entra с открытым исходным кодом и драйвер CSI для хранилища секретов совместно с Key Vault. | Эти функции помогают защищать и обновлять секреты, сертификаты и строки подключения в службе Key Vault посредством надёжного шифрования. Они предоставляют журнал аудита доступа и не допускают попадания основных секретов в конвейер развертывания. |
| (Кластер) Используйте Microsoft Defender для контейнеров. | Microsoft Defender для контейнеров помогает отслеживать и поддерживать безопасность кластеров, контейнеров и их приложений. |
Оптимизация затрат
Оптимизация затрат фокусируется на обнаружении шаблонов расходов, приоритете инвестиций в критически важные области и оптимизации в других в соответствии с бюджетом организации при выполнении бизнес-требований.
Принципы проектирования оптимизации затрат обеспечивают высокоуровневую стратегию проектирования для достижения этих целей и обеспечения компромиссов в техническом проектировании, связанном с AKS и его окружающей средой.
Контрольный список разработки рабочей нагрузки
Начните разрабатывать стратегию на основе контрольного списка для оптимизации затрат в инвестициях. Настройте структуру, чтобы рабочая нагрузка соответствовала бюджету, выделенному для рабочей нагрузки. Проект должен использовать правильные возможности Azure, отслеживать инвестиции и находить возможности для оптимизации с течением времени.
(Кластер) Включить ценовые категории для AKS в модель затрат. Чтобы оценить затраты, используйте калькулятор цен Azure и проверьте различные конфигурации и планы оплаты в калькуляторе.
(Кластер) Получите лучшие тарифы для вашей рабочей нагрузки. используйте соответствующий тип SKU виртуальной машины для каждого пула узлов, так как он напрямую влияет на затраты для выполнения ваших рабочих нагрузок. Выбор высокопроизводительной виртуальной машины без надлежащего использования может привести к расточительным расходам. Выбор менее мощной виртуальной машины может привести к проблемам производительности и увеличению простоя.
Если вы правильно планировали для емкости и рабочей нагрузки прогнозируемо и будете существовать в течение длительного периода времени, зарегистрируйтесь в резервированиях Azure или план экономии , чтобы сократить затраты на ресурсы.
Выберите виртуальные машины Azure Spot, чтобы использовать неиспользуемые ресурсы Azure со значительными скидками. Эти скидки могут достигать до 90% оплаты по мере использования. Если Azure нужно вернуть себе ресурсы, инфраструктура Azure вытесняет спотовые узлы.
Если вы запускаете AKS локально или на периферии, вы также можете использовать преимущество гибридного использования Azure для снижения затрат при запуске контейнерных приложений в этих сценариях.
(Кластер и рабочая нагрузка) Оптимизировать затраты на компоненты рабочей нагрузки. Выбрать наиболее экономичный регион для рабочей нагрузки. Оцените требования к затратам, задержкам и соответствию требованиям, чтобы обеспечить экономичность выполнения рабочей нагрузки и не влиять на клиентов или создавать дополнительные сетевые расходы. Регион, в котором вы развертываете рабочую нагрузку в Azure, может значительно повлиять на затраты. Из-за многих факторов стоимость ресурсов зависит от каждого региона в Azure.
Сохраняйте небольшие и оптимизированные образы, чтобы снизить затраты, так как новые узлы должны скачать эти образы. Сбои запросов пользователей или время ожидания при запуске приложения могут привести к избыточному выделению ресурсов. Создавайте образы таким образом, чтобы контейнер запускался как можно быстрее, чтобы избежать сбоев и тайм-аутов.
Ознакомьтесь с рекомендациями по оптимизации затрат из "Лучшие практики по мониторингу Kubernetes с помощью Azure Monitor", чтобы определить оптимальную стратегию мониторинга для ваших рабочих нагрузок. Анализ метрик производительности, начиная с ЦП, памяти, хранилища и сети, для выявления возможностей оптимизации затрат по кластерам, узлам и пространству имен.
(Кластер и рабочая нагрузка) Оптимизировать затраты на масштабирование рабочей нагрузки. Рассмотрите альтернативные конфигурации вертикального и горизонтального масштабирования, чтобы сократить затраты на масштабирование, при этом все равно соблюдая все требования к рабочей нагрузке. Используйте автомасштабирование для масштабирования при менее активной рабочей нагрузке.
(Кластер и рабочая нагрузка) Собирать и анализировать данные о затратах. Основой достижения оптимизации затрат является внедрение кластера с экономией затрат. Разработайте подход к эффективности затрат, который включает совместную работу между финансами, операциями и инженерными командами, чтобы обеспечить выравнивание по целям экономии затрат и обеспечить прозрачность облачных затрат.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Кластер и рабочая нагрузка) Согласуйте выбор SKU для AKS и размер управляемого диска с требованиями к рабочей нагрузке. | Сопоставление выбора с требованиями рабочей нагрузки помогает гарантировать, что вы не платите за ненужные ресурсы. |
| (Кластер) Выберите правильные типы ВМ для ваших пулов узлов AKS . Чтобы определить правильные типы экземпляров виртуальной машины, рассмотрите характеристики рабочей нагрузки, требования к ресурсам и требования к доступности. |
Выбор подходящего типа экземпляра виртуальной машины имеет решающее значение, так как он напрямую влияет на затраты на запуск приложений в AKS. Выбор высокопроизводительного экземпляра без правильного использования может привести к расточительным расходам. Выбор менее мощного экземпляра может привести к проблемам производительности и увеличению простоя. |
| (Кластер) Выберите виртуальные машины на основе более эффективной архитектуры Azure Resource Manager. AKS поддерживает создание пулов узлов Arm64 и сочетание узлов архитектуры Intel и Resource Manager в кластере. | Архитектура Arm64 обеспечивает более высокую ценовую производительность из-за более низкой производительности электроэнергии и эффективной производительности вычислений. Эти возможности могут повысить производительность при более низкой стоимости. |
| (Кластер) Включите автомасштабирование кластера , чтобы автоматически уменьшить количество узлов агента в ответ на превышение емкости ресурсов. | Автоматическое уменьшение числа узлов в вашем кластере AKS позволяет поддерживать эффективную работу кластера при низком спросе и увеличивать его при повышении спроса. |
| (Кластер) Включение автоматической подготовки узла для автоматизации выбора номера SKU виртуальной машины. | Автоматическое предоставление узлов упрощает процесс выбора SKU и определяет, исходя из ожидающих требований к ресурсам pod, оптимальную конфигурацию виртуальной машины для выполнения рабочих нагрузок наиболее эффективным и экономичным способом. |
| (Рабочая нагрузка) Используйте HorizontalPodAutoscaler для настройки количества модулей pod в развертывании в зависимости от использования ЦП или других метрик. | Автоматическое уменьшение числа pod'ов при низком уровне спроса и увеличение их числа при росте спроса приводит к более экономичной эксплуатации вашей нагрузки. |
| (Рабочая нагрузка) Используйте VerticalPodAutoscaler (предварительная версия) для защиты модулей pod и динамического задания запросов и ограничений на основе исторического использования. | Задавая запросы на ресурсы и ограничения для контейнеров каждой рабочей нагрузки, VerticalPodAutoscaler освобождает процессор и память для других подов и помогает обеспечить эффективное использование кластеров AKS. |
| (Кластер) Настройте надстройку AKS анализа затрат . | Расширение кластера анализа затрат позволяет получить подробные сведения о затратах, связанных с различными ресурсами Kubernetes в кластерах или пространствах имен. |
Операционное превосходство
Операционное совершенство в первую очередь фокусируется на процедурах практиках разработки, наблюдаемости и управлении релизами.
Принципы проектирования операционного превосходства обеспечивают высокоуровневую стратегию проектирования для достижения этих целей в отношении операционных требований рабочей нагрузки.
Контрольный список разработки рабочей нагрузки
Начните вашу стратегию проектирования на основе контрольного списка оценки проектирования для операционного совершенства для определения процессов наблюдения, тестирования и развертывания. Ознакомьтесь с лучшими практиками AKS и руководством по эксплуатации на втором этапе , чтобы узнать о ключевых моментах, касающихся понимания и реализации.
(Кластер) Реализовать развертывание инфраструктуры как кода (IaC). Использовать декларативный подход к развертыванию на основе шаблонов с помощью Bicep, Terraform или аналогичных средств. Убедитесь, что все развертывания повторяются, отслеживаются и хранятся в репозитории исходного кода. Дополнительные сведения см. в кратких руководствах в документации по продуктам AKS.
(Кластер и рабочая нагрузка) Автоматизация развертываний инфраструктуры и рабочих нагрузок. Использовать стандартные программные решения для управления, интеграции и автоматизации развертывания кластера и рабочих нагрузок. Интегрируйте конвейеры развертывания с системой управления исходным кодом и интегрируйте автоматические тесты.
Создайте автоматизированный процесс, чтобы обеспечить загрузку кластеров с необходимыми конфигурациями и развертываниями на уровне кластера. Обычно этот процесс выполняется с помощью GitOps.
Используйте повторяемые и автоматизированные процессы развертывания для рабочей нагрузки в рамках жизненного цикла разработки программного обеспечения.
(Кластер и рабочая нагрузка) Реализуйте стратегию мониторинга. Соберите журналы и метрики для мониторинга работоспособности рабочей нагрузки, выявления тенденций производительности и надежности и устранения неполадок. Ознакомьтесь с рекомендациями по мониторингу Kubernetes с помощью Azure Monitor и рекомендаций Well-Architected по проектированию и созданию системы мониторинга, чтобы определить оптимальную стратегию мониторинга для рабочих нагрузок.
Включите настройки диагностики, чтобы удостовериться, что взаимодействия с контрольной плоскостью или центральным сервером API регистрируются.
Рабочая нагрузка должна быть спроектирована для отправки данных телеметрии, которые можно собирать, и которые должны включать состояние активности и готовности.
(Кластер и рабочая нагрузка) реализовать тестирование в рабочих стратегиях. Тестирование в рабочей среде использует реальные развертывания для проверки и измерения поведения и производительности приложения в рабочей среде. Используйте методики проектирования хаоса, предназначенные для Kubernetes, чтобы определить проблемы надежности приложений или платформы.
Azure Chaos Studio может помочь имитировать ошибки и активировать ситуации аварийного восстановления.
(Кластер и рабочая нагрузка) Принудительное управление рабочими нагрузками. Политика Azure помогает обеспечить соответствие стандартам организации, автоматизирует применение политик и обеспечивает централизованную видимость и контроль над ресурсами кластера.
Ознакомьтесь с разделом "Политики Azure ", чтобы узнать больше о доступных встроенных политиках для AKS.
(Кластер и рабочая нагрузка) используйте сине-зеленые развертывания на уровне меток для критически важных рабочих нагрузок. Подход к развертыванию на уровне меток с использованием сине-зеленых развертываний может повысить уверенность в выпуске изменений и обеспечивает обновление без простоя, так как можно проверить совместимость с нижестоящими зависимостями, такими как платформа Azure, поставщики ресурсов и модули IaC.
Контроллеры Kubernetes и ingress поддерживают множество расширенных шаблонов развертывания для включения в процесс разработки выпусков. Рассмотрим такие шаблоны, как голубо-зеленые развертывания или канарейчные выпуски.
(Кластер и рабочая нагрузка) повысить устойчивость рабочих нагрузок. Создание рабочих нагрузок более устойчивой и облачной эффективной требует объединения усилий по оптимизации затрат, сокращению выбросов углеродаи оптимизации потребления энергии. Оптимизация затрат приложения — это начальный шаг в том, чтобы рабочие нагрузки были более устойчивыми.
Ознакомьтесь с принципами устойчивого проектирования программного обеспечения в AKS, чтобы узнать, как создавать устойчивые и эффективные рабочие нагрузки AKS.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Кластер) Внедрите стандарты конфигурации кластера и pod, используя политики Azure для AKS. | Политики Azure для AKS помогают осуществлять соблюдение и защиту на ваших кластерах в централизованном и единообразном режиме. Используйте политики для определения разрешений, предоставленных модулям pod, и обеспечения соответствия корпоративным политикам. |
| (Кластер) Настройте выделение статического блока Azure CNI для прогнозируемого выделения подсети pod и улучшения управления IP-адресами в кластерах AKS. Реализуйте выделение статических блоков, чтобы обеспечить прогнозируемое назначение IP-адресов для модулей pod Kubernetes в определенных диапазонах подсети, что обеспечивает интеграцию с существующими политиками безопасности сети. |
Важно для команд разработчиков, работающих с несколькими кластерами AKS, которым требуется предсказуемое выделение IP-адресов для интеграции с существующими политиками безопасности сети и правилами брандмауэра. Повышает эффективность работы благодаря прогнозируемой адресации сети и упрощенному управлению IP-адресами. |
| (Рабочая нагрузка) Используйте автоскейлер событий Kubernetes (KEDA) . | KEDA позволяет приложениям масштабироваться на основе событий, таких как количество обрабатываемых событий. Вы можете выбрать из богатого каталога более 50 масштабировщиков KEDA. |
| (Кластер) Используйте оператор цепочки инструментов KAITO для эффективного развертывания и управления рабочими нагрузками, связанными с обслуживанием моделей ИИ. | KAITO упрощает развертывание моделей ИИ и их масштабирование в Kubernetes, обеспечивая оптимизированную инфраструктуру для нагрузок инференса машинного обучения. Команды по обработке и анализу данных могут развертывать и масштабировать большие языковые модели или другие модели ИИ в AKS с помощью KAITO, которая автоматически обрабатывает ресурсы GPU, инфраструктуру обслуживания моделей и политики масштабирования без ручной настройки Kubernetes, что снижает операционную сложность. |
| (Кластер) Включите akS Automatic для полностью управляемого интерфейса Kubernetes с автоматизированным управлением кластерами. | AKS Automatic сокращает операционные издержки для управления кластерами Kubernetes путем автоматизации стандартных задач, обеспечивая оптимальную конфигурацию и безопасность. Команды разработчиков могут развертывать приложения в AKS без необходимости управлять конфигурацией кластера, обновлениями или оптимизацией. Это позволяет им сосредоточиться на разработке приложений, в то время как их инфраструктура Kubernetes автоматически следует лучшим практикам. |
Эффективность производительности
Эффективность производительности связана с поддержанием качества пользовательского опыта даже при возросшей нагрузке благодаря управлению емкостью. Стратегия включает масштабирование ресурсов, определение и оптимизацию потенциальных узких мест, а также оптимизацию для пиковой производительности.
Принципы проектирования производительности и эффективности обеспечивают стратегию проектирования на высоком уровне для достижения этих целей мощности и ожидаемого использования.
Контрольный список разработки рабочей нагрузки
Запустите дизайнерскую стратегию на основе контрольного списка для обзора проектирования производительности с целью определения базового уровня на основе ключевых показателей производительности для AKS.
(Кластер и рабочая нагрузка) Проведение планирования емкости. Выполнить и повторить подробное упражнение по планированию емкости, включающее SKU, параметры автомасштабирования, IP-адресацию и рекомендации по обработке отказа.
После официального оформления плана емкости часто обновляйте план, постоянно наблюдая за использованием ресурсов кластера.
(Кластер) определить стратегию масштабирования. Настройте масштабирование, чтобы обеспечить эффективное изменение ресурсов в соответствии с требованиями рабочей нагрузки без чрезмерного использования или отходов. Используйте возможности AKS, такие как автомасштабирование кластеров и HorizontalPodAutoscaler, чтобы динамично удовлетворять потребности в вычислительных ресурсах, ослабляя нагрузку на операции. Оптимизируйте рабочую нагрузку для эффективной работы и развертывания в контейнере.
Ознакомьтесь с руководством по масштабированию и секционированию , чтобы понять различные аспекты настройки масштабирования.
(Кластер и рабочая нагрузка) Проводить тестирование производительности. Проводить регулярные нагрузочные тестирования, которые задействуют автомасштабирование pod и кластера. Сравните результаты с целевыми показателями производительности и установленными базовыми показателями.
(Кластер и рабочая нагрузка) Масштабировать рабочие нагрузки и потоки независимо. Разделите рабочие нагрузки и потоки по разным пулам узлов, чтобы разрешить независимое масштабирование. Следуйте указаниям в Оптимизация дизайна рабочей нагрузки, используя потоки, чтобы выявить и расставить приоритеты ваших потоков.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Кластер) Включите автомасштабирование кластера , чтобы автоматически настроить количество узлов агента в ответ на требования рабочей нагрузки. Используйте HorizontalPodAutoscaler , чтобы настроить количество модулей pod в развертывании в зависимости от использования ЦП или других метрик. |
Возможность автоматического увеличения или уменьшения масштаба числа узлов и количества модулей pod в кластере AKS позволяет запускать эффективный и экономичный кластер. |
| (Кластер и рабочая нагрузка) Разделите рабочие нагрузки в разные пулы узлов и рассмотрите возможность масштабирования пула узлов пользователей. | В отличие от пулов системных узлов, которые всегда требуют запуска узлов, пулы пользовательских узлов позволяют увеличивать или уменьшать масштаб. |
| (Рабочая нагрузка) Используйте расширенные функции планировщика AKS для выполнения расширенной балансировки ресурсов для рабочих нагрузок, которые в этом нуждаются. | При управлении кластерами AKS часто необходимо изолировать команды и рабочие нагрузки. Расширенные функции, предоставляемые планировщиком Kubernetes, позволяют контролировать, какие pod могут быть размещены на определенных узлах. Кроме того, они позволяют управлять соответствующим распределением мультипод приложений в кластере. |
| (Рабочая нагрузка) Используйте KEDA для создания понятного набора правил автомасштабирования на основе сигналов, относящихся к рабочей нагрузке. | Не все решения масштабирования могут быть производными от метрик ЦП или памяти. Рекомендации по масштабированию часто возникают из более сложных или даже внешних точек данных. KEDA позволяет приложениям масштабироваться на основе событий, таких как количество сообщений в очереди или длина задержки раздела. |
| (Кластер) Включите режим высокой масштабируемости Azure Monitor для аналитики контейнеров для крупномасштабных развертываний Kubernetes с сотнями узлов. Это снижает потребление ресурсов при сохранении наблюдаемости. | Включает мониторинг и снижает затраты на ресурсы агента и повышает производительность сбора данных. Эта оптимизация полезна для корпоративных сред, на которых выполняются сотни узлов, где стандартные подходы мониторинга могут повлиять на производительность кластера и увеличить затраты. |
| (Кластер) Включите LocalDNS для крупномасштабных кластеров AKS для улучшения разрешения DNS, обрабатывая запросы локально и уменьшая задержку. | LocalDNS повышает производительность, уменьшая нагрузку на сеть и ускоряя обнаружение служб. Его локальное кэширование устраняет узкие места в системе DNS, сокращая внешние DNS-запросы, и обеспечивает непрерывное разрешение имен даже при отказах вышестоящих DNS-серверов. |
Политики Azure
Azure предоставляет широкий набор встроенных политик, связанных с AKS, которые применяются к ресурсу Azure, например типичным политикам Azure и надстройке политики Azure для Kubernetes и в кластере. Многие политики ресурсов Azure входят как в аудите, так и в запрете и развертывании, если не существует вариантов. Помимо встроенных определений политики Azure, можно создавать пользовательские политики как для ресурса AKS, так и для надстройки политики Azure для Kubernetes.
Некоторые рекомендации, приведенные в этой статье, можно проверить с помощью политики Azure. Например, можно проверить следующие политики кластера:
- Кластеры имеют проверки готовности или живучести, настроенные для спецификации пода.
- Microsoft Defender для облачных политик.
- Режим проверки подлинности и политики конфигурации, такие как идентификатор Microsoft Entra, RBAC и отключение локальной проверки подлинности.
- Политики сетевого доступа сервера API, включая частный кластер.
- Политики конфигурации GitOps.
- Политики настройки диагностики
- Ограничения версий AKS.
- Запретить вызов команды.
Вы также можете проверить следующие политики кластера и рабочей нагрузки:
- Инициативы по безопасности подов кластера Kubernetes для рабочих нагрузок на основе Linux.
- Включите политики возможностей pod и контейнеров, такие как AppArmor, sysctl, ограничения безопасности, SELinux, seccomp, привилегированные контейнеры и учетные данные API кластера автоподключения.
- Монтирование, драйверы томов и политики файловой системы.
- Политики сети pod и контейнеров, такие как сеть хоста, порт, разрешенные внешние IP-адреса, HTTPS и внутренние балансировщики нагрузки.
- Ограничения на развертывание пространства имен.
- Ограничения ресурсов ЦП и памяти.
Для управления ознакомьтесь со встроенными определениями политики Azure для Kubernetes и другими политиками, которые могут повлиять на безопасность вычислительного слоя.
Рекомендации помощника по Azure
Помощник по Azure — это персонализированный облачный консультант, который поможет вам следовать рекомендациям по оптимизации развертываний Azure.
Дополнительные сведения см. в разделе Помощника по Azure.
Пример архитектуры
Базовая архитектура, демонстрирующая основные рекомендации: базовая архитектура AKS.
Связанный контент
Рассмотрим следующие статьи как ресурсы, демонстрирующие рекомендации, выделенные в этой статье.
- Базовая архитектура AKS
- Расширенная архитектура микрослужб AKS
- Кластер AKS для рабочей нагрузки PCI-DSS
- Базовый уровень AKS для многорегиональных кластеров
- Акселератор целевой зоны AKS
Создайте опыт реализации с помощью следующей документации по продукту: