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


Рекомендации по архитектуре службы Azure Kubernetes (AKS)

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

В этой статье предполагается, что в качестве архитектора вы рассмотрели дерево решений в вычислениях и выбрали AKS в качестве вычислительной платформы для вашей рабочей нагрузки. В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами столпов платформы Well-Architected Azure.

Technology scope

В этом обзоре рассматриваются взаимосвязанные решения для следующих ресурсов Azure:

  • AKS

When you discuss the Well-Architected Framework pillars' best practices for AKS, it's important to distinguish between cluster and workload. Рекомендации по кластеру — это общая ответственность между администратором кластера и их поставщиком ресурсов, а рекомендации по рабочей нагрузке — это домен разработчика. В этой статье рассматриваются соображения и рекомендации для каждой из этих ролей.

Note

The following pillars include a design checklist and a list of recommendations that indicate whether each choice is applicable to cluster architecture, workload architecture, or both.

Reliability

Цель компонента надежности заключается в обеспечении непрерывной функциональности путем создания достаточной устойчивости и возможности быстрого восстановления после сбоев.

принципы проектирования надежности обеспечивают высокоуровневую стратегию проектирования, применяемую для отдельных компонентов, системных потоков и системы в целом.

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

Начните вашу стратегию проектирования на основе контрольного списка обзора для надежности. Определите, насколько это соответствует вашим бизнес-требованиям, принимая во внимание функции AKS и его зависимости. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.

  • (Кластер) Создавать избыточность для повышения устойчивости. Используйте зоны доступности для кластеров AKS в рамках вашей стратегии устойчивости, чтобы увеличить доступность при развертывании в одном регионе. Многие регионы Azure предоставляют зоны доступности. Зоны достаточно близки, чтобы иметь между ними подключения с низкой задержкой, но достаточно далеко друг от друга, чтобы снизить вероятность того, что локальные сбои будут влиять на несколько зон.

    Для критически важных рабочих нагрузок разверните несколько кластеров в разных регионах Azure. Географически распределяя кластеры AKS, можно добиться более высокой устойчивости и свести к минимуму последствия региональных сбоев. Стратегия многорегионирования помогает повысить доступность и обеспечить непрерывность бизнес-процессов. Рабочие нагрузки, подключенные к Интернету, должны использовать Azure Front Door или Azure Traffic Manager для глобальной маршрутизации трафика между кластерами AKS. For more information, see Multiregion strategy.

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

  • (Кластер и рабочая нагрузка) отслеживать надежность и общие показатели работоспособности кластера и рабочих нагрузок. Собирать журналы и метрики для мониторинга работоспособности рабочей нагрузки, выявления тенденций производительности и надежности и устранения неполадок. Ознакомьтесь с рекомендациями по мониторингу Kubernetes с помощью Azure Monitor и с руководством Well-Architected по моделированию работоспособности для рабочих нагрузок, чтобы получить помощь в разработке решения для мониторинга надежности и работоспособности вашей AKS-системы.

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

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

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

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

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

Configuration recommendations

Recommendation Benefit
(Кластер и рабочая нагрузка) Управление планированием pod с помощью селекторов узлов и сходства.

В AKS планировщик Kubernetes может логически изолировать рабочие нагрузки по оборудованию в узле. Unlike tolerations, pods that don't have a matching node selector can be scheduled on labeled nodes, but priority is given to pods that define the matching node selector.
Свойство привязки к узлам обеспечивает большую гибкость, позволяя указать, что происходит, если pod не может быть сопоставлен с узлом.
(Кластер) Выберите соответствующий сетевой плагин на основе требований к сети и размера кластера.

Различные сетевые плагины предоставляют разный уровень функциональности. Сетевой интерфейс контейнеров Azure (Azure CNI) требуется для конкретных сценариев, таких как пулы узлов под управлением Windows, некоторые требования к сети и политики сети Kubernetes.

Дополнительные сведения см. в статье Kubenet и Azure CNI.
Правильный сетевой подключаемый модуль может помочь обеспечить лучшую совместимость и производительность.
(Кластер и рабочая нагрузка) Используйте соглашение об уровне доступности SLA AKS для кластеров промышленного уровня. Рабочая нагрузка может поддерживать более высокие целевые показатели доступности из-за более высоких гарантий доступности конечной точки сервера API Kubernetes для кластеров AKS.
(Cluster) Use availability zones to maximize resilience within an Azure region by distributing AKS agent nodes across physically separate datacenters.

Если существуют требования к колокейшну, используйте развертывание AKS на основе масштабируемых наборов виртуальных машин в одной зоне или используйте группы размещения близкого взаимодействия, чтобы свести к минимуму межузловую задержку.
Распространив пулы узлов по нескольким зонам, узлы одного пула продолжают работать, даже если другая зона выйдет из строя.
(Кластер и рабочая нагрузка) Определите запросы и ограничения ресурсов pod в манифестах развертывания приложений. Обеспечьте выполнение этих ограничений с помощью Azure Policy. Ограничения ресурсов ЦП и памяти контейнера необходимы для предотвращения нехватки ресурсов в кластере Kubernetes.
(Кластер и рабочая нагрузка) Не изолируйте пул системных узлов от рабочих нагрузок приложений.

Для пулов системных узлов требуется SKU виртуальной машины с как минимум 2 виртуальными ЦП и 4 ГБ памяти. Рекомендуется использовать 4 виртуальных ЦП или более. Дополнительные сведения см. в разделе пулы узлов системы и пользователя.
Пул узлов системы размещает критически важные pod, необходимые для плоскости управления вашего кластера. Изолируя эти модули системы от рабочих нагрузок приложений, вы помогаете гарантировать, что основные службы остаются не затронутыми требованиями к ресурсам или потенциальными проблемами, вызванными рабочей нагрузкой.
(Кластер и рабочая нагрузка) Разделение приложений на выделенные пулы узлов на основе конкретных требований. Избегайте большого количества пулов узлов, чтобы сократить затраты на управление. Приложения могут совместно использовать ту же конфигурацию и нуждаются в виртуальных машинах с поддержкой GPU, ЦП или оптимизированных для памяти виртуальных машинах или возможности масштабирования до нуля. Делегируя пулы узлов конкретным приложениям, вы можете обеспечить, что каждое приложение получает необходимые ресурсы без перерасхода или недостаточного использования ресурсов.
(Cluster) Use a NAT gateway for clusters that run workloads that make many concurrent outbound connections. Шлюз Azure NAT поддерживает надежный исходящий трафик в масштабе и помогает избежать проблем с надежностью, применяя ограничения Azure Load Balancer к высокому параллельному исходящему трафику.
(Кластер и рабочая нагрузка) Используйте Azure Backup для обеспечения защиты кластера AKS и восстановления в альтернативных регионах в случае аварии. Azure Backup поддерживает операции резервного копирования и восстановления контейнерных приложений и данных, выполняемых как для состояния кластера, так и для данных приложения.

Вы можете использовать резервные копии в региональном сценарии аварии и восстановить резервные копии.
Azure Backup с помощью Службы Azure Kubernetes (AKS) предлагает полностью управляемое, масштабируемое, безопасное и экономичное решение. Повышает надежность рабочей нагрузки без сложностей настройки и поддержания инфраструктуры резервного копирования.

Security

Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.

Принципы проектирования безопасности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию AKS.

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

Начните стратегию проектирования на основе контрольного списка для проверки проектирования безопасности и выявления уязвимостей и элементами управления, чтобы улучшить уровень безопасности. Ознакомьтесь с понятиями безопасности AKS и оцените рекомендации по обеспечению безопасности на основе тестовых показателей CIS Kubernetes. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.

  • (Кластер) Интеграция с Microsoft Entra ID для идентификации и управления доступом. Централизуйте управление идентификацией для вашего кластера с помощью Microsoft Entra ID. Любые изменения в статусе учетной записи пользователя или группы автоматически обновляются при доступе к кластеру 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.

  • (Рабочая нагрузка) Поддерживать защищённую цепочку поставок программного обеспечения затвержденной рабочей нагрузки. Убедитесь, что ваш конвейер непрерывной интеграции и доставки защищен с учётом проверки контейнеров.

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

Configuration recommendations

Recommendation Benefit
(Cluster) Use managed identities on the cluster. Вы можете избежать затрат, связанных с управлением и поворотом принципов службы.
(Рабочая нагрузка) Используйте идентификатор нагрузки 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 предоставляет более широкий набор функций, включая упорядочение политик и приоритет, правила отказа и более гибкие правила сопоставления.
(Cluster) Secure clusters and pods by using Azure Policy. Политика Azure может помочь применять масштабное принудительное применение и защитные меры в отношении кластеров централизованным и согласованным образом. Он также может управлять предоставлением функций модулю pod и определять, нарушает ли что-либо политику компании.
(Кластер) Безопасный доступ к ресурсам с помощью контейнера. Ограничьте доступ к действиям, которые могут выполнять контейнеры. Укажите наименьшее количество разрешений и избегайте использования корневого доступа или повышения привилегий.

Сведения о контейнерах под управлением Linux см. в разделе Доступ к ресурсам с помощью встроенных функций безопасности Linux.
Ограничивая разрешения и избегая использования корневой или привилегированной эскалации, вы помогаете снизить риск нарушений безопасности. Вы можете сделать так, чтобы, даже если контейнер скомпрометирован, потенциальный ущерб был сведен к минимуму.
(Cluster) Control cluster egress traffic by ensuring that your cluster's outbound traffic passes through a network security point such as Azure Firewall or an HTTP proxy. Путем маршрутизации исходящего трафика через брандмауэр Azure или ПРОКСИ-сервер HTTP можно применять политики безопасности, которые предотвращают несанкционированный доступ и кражу данных. Этот подход также упрощает администрирование политик безопасности и упрощает применение согласованных правил во всем кластере AKS.
(Кластер) Используйте идентификатор рабочей нагрузки Microsoft Entra с открытым исходным кодом и драйвер CSI для хранилища секретов совместно с Key Vault. Эти функции помогают защищать и обновлять секреты, сертификаты и строки подключения в службе Key Vault посредством надёжного шифрования. Они предоставляют журнал аудита доступа и не допускают попадания основных секретов в конвейер развертывания.
(Кластер) Используйте Microsoft Defender для контейнеров. Microsoft Defender для контейнеров помогает отслеживать и поддерживать безопасность кластеров, контейнеров и их приложений.

Cost Optimization

Оптимизация затрат фокусируется на обнаружении шаблонов расходов, приоритете инвестиций в критически важные области и оптимизации в других в соответствии с бюджетом организации при выполнении бизнес-требований.

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

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

Начните разрабатывать стратегию на основе контрольного списка для оптимизации затрат в инвестициях. Настройте структуру, чтобы рабочая нагрузка соответствовала бюджету, выделенному для рабочей нагрузки. Проект должен использовать правильные возможности Azure, отслеживать инвестиции и находить возможности для оптимизации с течением времени.

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

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

    If you properly planned for capacity and your workload is predictable and will exist for an extended period of time, sign up for Azure Reservations or a savings plan to reduce your resource costs.

    Выберите виртуальные машины Azure Spot, чтобы использовать неиспользуемые ресурсы Azure со значительными скидками. Эти скидки могут достигать до 90% оплаты по мере использования. Если Azure нужно вернуть себе ресурсы, инфраструктура Azure вытесняет спотовые узлы.

    Если вы запускаете AKS локально или на периферии, вы также можете использовать преимущество гибридного использования Azure для снижения затрат при запуске контейнерных приложений в этих сценариях.

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

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

    Ознакомьтесь с рекомендациями по оптимизации затрат из "Лучшие практики по мониторингу Kubernetes с помощью Azure Monitor", чтобы определить оптимальную стратегию мониторинга для ваших рабочих нагрузок. Анализ метрик производительности, начиная с ЦП, памяти, хранилища и сети, для выявления возможностей оптимизации затрат по кластерам, узлам и пространству имен.

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

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

Configuration recommendations

Recommendation Benefit
(Кластер и рабочая нагрузка) Согласуйте выбор SKU для AKS и размер управляемого диска с требованиями к рабочей нагрузке. Сопоставление выбора с требованиями рабочей нагрузки помогает гарантировать, что вы не платите за ненужные ресурсы.
(Кластер) Выберите правильные типы ВМ для ваших пулов узлов AKS .

Чтобы определить правильные типы экземпляров виртуальной машины, рассмотрите характеристики рабочей нагрузки, требования к ресурсам и требования к доступности.
Выбор подходящего типа экземпляра виртуальной машины имеет решающее значение, так как он напрямую влияет на затраты на запуск приложений в AKS. Выбор высокопроизводительного экземпляра без правильного использования может привести к расточительным расходам. Выбор менее мощного экземпляра может привести к проблемам производительности и увеличению простоя.
(Кластер) Выберите виртуальные машины на основе более эффективной архитектуры Azure Resource Manager. AKS поддерживает создание пулов узлов Arm64 и сочетание узлов архитектуры Intel и Resource Manager в кластере. Архитектура Arm64 обеспечивает более высокую ценовую производительность из-за более низкой производительности электроэнергии и эффективной производительности вычислений. Эти возможности могут повысить производительность при более низкой стоимости.
(Cluster) Enable the cluster autoscaler to automatically reduce the number of agent nodes in response to excess resource capacity. Автоматическое уменьшение числа узлов в вашем кластере AKS позволяет поддерживать эффективную работу кластера при низком спросе и увеличивать его при повышении спроса.
(Cluster) Enable node autoprovisioning to automate VM SKU selection. Автоматическое предоставление узлов упрощает процесс выбора SKU и определяет, исходя из ожидающих требований к ресурсам pod, оптимальную конфигурацию виртуальной машины для выполнения рабочих нагрузок наиболее эффективным и экономичным способом.
(Workload) Use HorizontalPodAutoscaler to adjust the number of pods in a deployment depending on CPU utilization or other metrics. Автоматическое уменьшение числа pod'ов при низком уровне спроса и увеличение их числа при росте спроса приводит к более экономичной эксплуатации вашей нагрузки.
(Workload) Use VerticalPodAutoscaler (preview) to rightsize your pods and dynamically set requests and limits based on historic usage. Задавая запросы на ресурсы и ограничения для контейнеров каждой рабочей нагрузки, VerticalPodAutoscaler освобождает процессор и память для других подов и помогает обеспечить эффективное использование кластеров AKS.
(Кластер) Настройте надстройку AKS анализа затрат . Расширение кластера анализа затрат позволяет получить подробные сведения о затратах, связанных с различными ресурсами Kubernetes в кластерах или пространствах имен.

Operational Excellence

Операционное совершенство в первую очередь фокусируется на процедурах практиках разработки, наблюдаемости и управлении релизами.

Принципы проектирования операционного превосходства обеспечивают высокоуровневую стратегию проектирования для достижения этих целей в отношении операционных требований рабочей нагрузки.

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

Начните вашу стратегию проектирования на основе контрольного списка оценки проектирования для операционного совершенства для определения процессов наблюдения, тестирования и развертывания. Ознакомьтесь с лучшими практиками AKS и руководством по эксплуатации на втором этапе , чтобы узнать о ключевых моментах, касающихся понимания и реализации.

  • (Кластер) Реализовать развертывание инфраструктуры как кода (IaC). Использовать декларативный подход к развертыванию на основе шаблонов с помощью Bicep, Terraform или аналогичных средств. Убедитесь, что все развертывания повторяются, отслеживаются и хранятся в репозитории исходного кода. For more information, see the quickstarts in the AKS product documentation.

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

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

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

  • (Кластер и рабочая нагрузка) реализовать комплексную стратегию мониторинга. Собирать журналы и метрики для мониторинга работоспособности рабочей нагрузки, выявления тенденций производительности и надежности и устранения неполадок. Ознакомьтесь с рекомендациями по мониторингу Kubernetes с помощью Azure Monitor и рекомендаций Well-Architected по проектированию и созданию системы мониторинга, чтобы определить оптимальную стратегию мониторинга для рабочих нагрузок.

    Включите настройки диагностики, чтобы удостовериться, что взаимодействия с контрольной плоскостью или центральным сервером API регистрируются.

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

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

    Azure Chaos Studio может помочь имитировать ошибки и активировать ситуации аварийного восстановления.

  • (Кластер и рабочая нагрузка) Принудительное управление рабочими нагрузками. Политика Azure помогает обеспечить соответствие стандартам организации, автоматизирует применение политик и обеспечивает централизованную видимость и контроль над ресурсами кластера.

    Review the Azure policies section to learn more about the available built-in policies for AKS.

  • (Кластер и рабочая нагрузка) используйте сине-зеленые развертывания на уровне меток для критически важных рабочих нагрузок. Подход к развертыванию на уровне меток с использованием сине-зеленых развертываний может повысить уверенность в выпуске изменений и обеспечивает обновление без простоя, так как можно проверить совместимость с нижестоящими зависимостями, такими как платформа Azure, поставщики ресурсов и модули IaC.

    Контроллеры Kubernetes и ingress поддерживают множество расширенных шаблонов развертывания для включения в процесс разработки выпусков. Рассмотрим такие шаблоны, как голубо-зеленые развертывания или канарейчные выпуски.

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

    Ознакомьтесь с принципами устойчивого проектирования программного обеспечения в AKS, чтобы узнать, как создавать устойчивые и эффективные рабочие нагрузки AKS.

Configuration recommendations

Recommendation Benefit
(Кластер) Внедрите стандарты конфигурации кластера и pod, используя политики Azure для AKS. Политики Azure для AKS помогают осуществлять соблюдение и защиту на ваших кластерах в централизованном и единообразном режиме. Используйте политики для определения разрешений, предоставленных модулям pod, и обеспечения соответствия корпоративным политикам.
(Рабочая нагрузка) Используйте автоскейлер событий Kubernetes (KEDA) . KEDA позволяет приложениям масштабироваться на основе событий, таких как количество обрабатываемых событий. Вы можете выбрать из богатого каталога более 50 масштабировщиков KEDA.

Performance Efficiency

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

Принципы проектирования производительности и эффективности обеспечивают стратегию проектирования на высоком уровне для достижения этих целей мощности и ожидаемого использования.

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

Запустите дизайнерскую стратегию на основе контрольного списка для обзора проектирования производительности с целью определения базового уровня на основе ключевых показателей производительности для AKS.

  • (Кластер и рабочая нагрузка) Проведение планирования емкости. Выполнить и повторить подробное упражнение по планированию емкости, включающее SKU, параметры автомасштабирования, IP-адресацию и рекомендации по обработке отказа.

    После официального оформления плана емкости часто обновляйте план, постоянно наблюдая за использованием ресурсов кластера.

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

    Ознакомьтесь с руководством по масштабированию и секционированию , чтобы понять различные аспекты настройки масштабирования.

  • (Кластер и рабочая нагрузка) Проводить тестирование производительности. Проводить регулярные нагрузочные тестирования, которые задействуют автомасштабирование pod и кластера. Сравните результаты с целевыми показателями производительности и установленными базовыми показателями.

  • (Кластер и рабочая нагрузка) Масштабировать рабочие нагрузки и потоки независимо. Разделите рабочие нагрузки и потоки по разным пулам узлов, чтобы разрешить независимое масштабирование. Следуйте указаниям в Оптимизация дизайна рабочей нагрузки, используя потоки, чтобы выявить и расставить приоритеты ваших потоков.

Configuration recommendations

Recommendation Benefit
(Cluster) Enable cluster autoscaler to automatically adjust the number of agent nodes in response to workload demands.

Use the HorizontalPodAutoscaler to adjust the number of pods in a deployment depending on CPU utilization or other metrics.
Возможность автоматического увеличения или уменьшения масштаба числа узлов и количества модулей pod в кластере AKS позволяет запускать эффективный и экономичный кластер.
(Кластер и рабочая нагрузка) Разделите рабочие нагрузки в разные пулы узлов и рассмотрите возможность масштабирования пула узлов пользователей. В отличие от пулов системных узлов, которые всегда требуют запуска узлов, пулы пользовательских узлов позволяют увеличивать или уменьшать масштаб.
(Рабочая нагрузка) Используйте расширенные функции планировщика AKS для выполнения расширенной балансировки ресурсов для рабочих нагрузок, которые в этом нуждаются. При управлении кластерами AKS часто необходимо изолировать команды и рабочие нагрузки. Расширенные функции, предоставляемые планировщиком Kubernetes, позволяют контролировать, какие pod могут быть размещены на определенных узлах. Кроме того, они позволяют управлять соответствующим распределением мультипод приложений в кластере.
(Workload) Use KEDA to build a meaningful autoscale ruleset based on signals that are specific to your workload. Не все решения масштабирования могут быть производными от метрик ЦП или памяти. Рекомендации по масштабированию часто возникают из более сложных или даже внешних точек данных. KEDA позволяет приложениям масштабироваться на основе событий, таких как количество сообщений в очереди или длина задержки раздела.

Azure policies

Azure предоставляет широкий набор встроенных политик, связанных с AKS, которые применяются к ресурсу Azure, например типичным политикам Azure и надстройке политики Azure для Kubernetes и в кластере. Many of the Azure resource policies come in both Audit/Deny and a Deploy If Not Exists variants. Помимо встроенных определений политики 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. Ниже приведены некоторые рекомендации, которые помогут повысить надежность, безопасность, эффективность затрат, производительность и эффективность работы AKS.

Example architecture

Базовая архитектура, демонстрирующая основные рекомендации: базовая архитектура AKS.

Рассмотрим следующие статьи как ресурсы, демонстрирующие рекомендации, выделенные в этой статье.

Создайте опыт реализации с помощью следующей документации по продукту: