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


Перспектива Azure Well-Architected Framework в службе Azure Kubernetes (AKS)

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

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

Важный

Как использовать это руководство

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

Также включены рекомендации по возможностям технологий, которые помогут материализовать эти стратегии. Рекомендации не представляют исчерпывающий список всех конфигураций, доступных для AKS и его зависимостей. Вместо этого они перечисляют ключевые рекомендации, сопоставленные с перспективами проектирования. Используйте рекомендации для создания подтверждения концепции или оптимизации существующих сред.

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

область технологий

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

  • AKS

При обсуждении лучших практик Well-Architected Framework для AKS важно различать кластер и рабочих нагрузок. Рекомендации по кластеру — это общая ответственность между администратором кластера и их поставщиком ресурсов, а рекомендации по рабочей нагрузке — это домен разработчика. В этой статье рассматриваются соображения и рекомендации для каждой из этих ролей.

Заметка

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

Надежность

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

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

Контрольный список проектирования

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

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

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

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

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

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

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

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

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

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

Рекомендации

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

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

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

Дополнительные сведения см. в статье Kubenet и Azure CNI.
Правильный сетевой подключаемый модуль может помочь обеспечить лучшую совместимость и производительность.
(Кластер и рабочая нагрузка) Используйте соглашение об уровне доступности SLA AKS для кластеров промышленного уровня. Рабочая нагрузка может поддерживать более высокие целевые показатели доступности из-за более высоких гарантий доступности конечной точки сервера API Kubernetes для кластеров AKS.
(Кластер) Используйте зоны доступности, чтобы максимально повысить устойчивость в регионе Azure, распределяя узлы агентов AKS по физически отдельным центрам обработки данных.

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

Для пулов системных узлов требуется SKU виртуальной машины с как минимум 2 виртуальными ЦП и 4 ГБ памяти. Рекомендуется использовать 4 виртуальных ЦП или более. Дополнительные сведения см. в пулы системных и пользовательских узлов.
Пул узлов системы размещает критически важные pod, необходимые для плоскости управления вашего кластера. Изолируя эти модули системы от рабочих нагрузок приложений, вы помогаете гарантировать, что основные службы остаются не затронутыми требованиями к ресурсам или потенциальными проблемами, вызванными рабочей нагрузкой.
(Кластер и рабочая нагрузка) Разделение приложений на выделенные пулы узлов на основе конкретных требований. Избегайте большого количества пулов узлов, чтобы сократить затраты на управление. Приложения могут совместно использовать ту же конфигурацию и нуждаются в виртуальных машинах с поддержкой GPU, ЦП или оптимизированных для памяти виртуальных машинах или возможности масштабирования до нуля. Делегируя пулы узлов конкретным приложениям, вы можете обеспечить, что каждое приложение получает необходимые ресурсы без перерасхода или недостаточного использования ресурсов.
(Кластер) Используйте шлюз NAT для кластеров, выполняющих рабочие нагрузки, выполняющие множество одновременных исходящих подключений. Шлюз Azure NAT поддерживает надежный исходящий трафик в масштабе и помогает избежать проблем с надежностью, применяя ограничения Azure Load Balancer к высокому параллельному исходящему трафику.
(Кластер и рабочая нагрузка) Используйте Azure Backup для обеспечения защиты кластера AKS и восстановления в альтернативных регионах в случае аварии. Azure Backup поддерживает операции резервного копирования и восстановления контейнерных приложений и данных, выполняемых как для состояния кластера, так и для данных приложения.

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

Безопасность

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

Принципы проектирования безопасности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию 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.

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

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

Рекомендации

Рекомендация Преимущества
(Кластер) Используйте управляемые удостоверения на кластере. Вы можете избежать затрат, связанных с управлением и поворотом принципов службы.
(Рабочая нагрузка) Используйте идентификатор нагрузки 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.
(Кластер) Используйте идентификатор рабочей нагрузки Microsoft Entra с открытым исходным кодом и драйвер C SI хранилища секретов с помощью Key Vault. Эти функции помогают защищать и обновлять секреты, сертификаты и строки подключения в службе Key Vault посредством надёжного шифрования. Они предоставляют журнал аудита доступа и не допускают попадания основных секретов в конвейер развертывания.
(Кластер) Используйте Microsoft Defender для контейнеров. Microsoft Defender для контейнеров помогает отслеживать и поддерживать безопасность кластеров, контейнеров и их приложений.

Оптимизация затрат

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

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

Контрольный список проектирования

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

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

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

    Если вы правильно планировали мощности и ваша рабочая нагрузка прогнозируема и будет актуальной в течение длительного времени, подпишитесь на Azure Reservations или план экономии, чтобы сократить затраты на ресурсы.

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

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

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

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

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

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

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

Рекомендации

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

Чтобы определить правильные типы экземпляров виртуальной машины, рассмотрите характеристики рабочей нагрузки, требования к ресурсам и требования к доступности.
Выбор подходящего типа экземпляра виртуальной машины имеет решающее значение, так как он напрямую влияет на затраты на запуск приложений в AKS. Выбор высокопроизводительного экземпляра без правильного использования может привести к расточительным расходам. Выбор менее мощного экземпляра может привести к проблемам производительности и увеличению простоя.
(Кластер) Выберите виртуальные машины на основе более эффективной архитектуры Azure Resource Manager. AKS поддерживает создании пулов узлов Arm64 и сочетании узлов архитектуры Intel и Resource Manager в кластере. Архитектура Arm64 обеспечивает более высокую ценовую производительность из-за более низкой производительности электроэнергии и эффективной производительности вычислений. Эти возможности могут повысить производительность при более низкой стоимости.
(Кластер) Включите автомасштабирование кластера с помощью, чтобы автоматически уменьшить количество узлов-агентов при наличии избыточной емкости ресурсов. Автоматическое уменьшение числа узлов в вашем кластере AKS позволяет поддерживать эффективную работу кластера при низком спросе и увеличивать его при повышении спроса.
(Кластер) Включение автоматической подготовки узла для автоматизации выбора номера SKU виртуальной машины. Автоматическая подготовка узла упрощает процесс выбора номера SKU и решает, исходя из ожидающих требований к ресурсам pod, оптимальную конфигурацию виртуальной машины для выполнения рабочих нагрузок наиболее эффективным и экономичным способом.
(Рабочая нагрузка) Используйте HorizontalPodAutoscaler для настройки количества pod в развертывании в зависимости от загрузки ЦП или других метрик. Автоматическое уменьшение числа pod'ов при низком уровне спроса и увеличение их числа при росте спроса приводит к более экономичной эксплуатации вашей нагрузки.
(Рабочая нагрузка) Используйте VerticalPodAutoscaler (предварительная версия) для оптимизации размеров ваших подов и динамической настройки запросов и лимитов на основе исторического использования. Задавая запросы на ресурсы и ограничения для контейнеров каждой рабочей нагрузки, 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.

Рекомендации

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

Эффективность производительности

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

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

Контрольный список проектирования

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

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

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

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

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

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

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

Рекомендации

Рекомендация Преимущества
(Кластер) Включите автомасштабирование кластера для автоматической настройки количества узлов агента в ответ на требования рабочей нагрузки.

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

Политики 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. Ниже приведены некоторые рекомендации, которые помогут повысить надежность, безопасность, эффективность затрат, производительность и эффективность работы AKS.

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

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