K8s/Kubernetes: AWS, GCP и Azure
Опубликовано: 2022-03-11Kubernetes (часто стилизованный под K8) много лет назад выиграл битву инструментов оркестрации контейнеров. Тем не менее, сегодня все еще существует множество способов внедрить Kubernetes и заставить его работать с различными инфраструктурами и многими инструментами, некоторые из которых поддерживаются лучше, чем другие. Однако, пожалуй, самым интересным событием на этом фронте является то, что ведущие облачные провайдеры решили выпустить свои собственные управляемые версии Kubernetes:
- Microsoft Azure предлагает службу Azure Kubernetes (AKS)
- AWS предлагает Amazon Elastic Kubernetes Service (EKS)
- Google Cloud предлагает Google Kubernetes Engine (GKE)
Что предлагают эти платформы с точки зрения DevOps? Выполняют ли они свои обещания? Как соотносятся время их создания и другие бенчмарки? Насколько хорошо они интегрируются со своими платформами, особенно с инструментами командной строки? Каково это поддерживать и работать с ними? Ниже мы рассмотрим эти и другие вопросы.
Примечание. Читателям, которые хотели бы объяснить концепции кластера Kubernetes, прежде чем читать дальше, Дмитрий Кононов предлагает отличное введение.
AKS, EKS и GKE: рекламируемые функции
Мы решили сгруппировать различные функции, доступные для каждой управляемой версии Kubernetes, в отдельные блоки:
- Общий обзор
- Сеть
- Масштабируемость и производительность
- Безопасность и мониторинг
- Экосистема
- Цены
Примечание. Эти сведения могут со временем меняться, поскольку поставщики облачных услуг регулярно обновляют свои продукты.
Общий обзор
Сервисный аспект | АКС | ЭКС | ГКЭ |
---|---|---|---|
Год выпуска | 2017 | 2018 | 2014 |
Последняя версия | 1.15.11 (по умолчанию) — 1.18.2 (предварительная версия) | 1.16.8 (по умолчанию) | 1.14.10 (по умолчанию) — 1.16.9 |
Специальные компоненты | омс-агент, тоннельный фронт | aws-узел | fluentd, fluentd-gcp-scaler, event-exporter, l7-default-backend |
Обновление плоскости управления Kubernetes | Руководство | Руководство | Автоматически (по умолчанию) или вручную |
Улучшения рабочих | Руководство | Да (удобно с управляемыми группами узлов) | Да: автоматический и ручной, возможна точная настройка |
Соглашение об уровне обслуживания | 99,95% с зоной доступности, 99,9% без | 99,9% для EKS (мастер), 99,99% для EC2 (узлы) | 99,95 процента в пределах региона, 99,5 процента в пределах зоны |
Нативная поддержка Knative | Нет | Нет | Нет (но встроенная установка Istio) |
Цена плоскости управления Kubernetes | Бесплатно | 0,10 $/час | 0,10 $/час |
Сам Kubernetes был проектом Google, поэтому логично, что они первыми предложили размещенную версию в 2014 году.
Из трех сравниваемых здесь Azure была следующей с AKS, и у нее было некоторое время для улучшения: если вы помните acs-engine, который использовался для предоставления Kubernetes в Azure несколько лет назад, вы оцените усилия Microsoft по его замене. акс-двигатель.
AWS был последним, кто развернул свою собственную версию EKS, поэтому иногда может показаться, что он отстает в плане функций, но они наверстывают упущенное.
С точки зрения ценообразования, конечно, все всегда меняется, и Google решила присоединиться к AWS по цене 0,10 доллара в час, начиная с июня 2020 года. Azure является здесь аутсайдером, предоставляя сервис AKS бесплатно, но неясно, как долго это может длиться.
Еще одно основное отличие заключается в возможности обновления кластера. Наиболее автоматизированные обновления находятся в GKE, и они включены по умолчанию. Однако здесь AKS и EKS похожи друг на друга в том смысле, что оба требуют ручных запросов, чтобы иметь возможность обновить главный или рабочий узлы.
Сеть
Сервисный аспект | АКС | ЭКС | ГКЭ |
---|---|---|---|
Сетевые политики | Да: политики сети Azure или Calico | Необходимо установить Калико | Да: родной через Calico |
Балансировка нагрузки | Базовый или стандартный балансировщик нагрузки SKU | Классический и сетевой балансировщик нагрузки | Контейнерный балансировщик нагрузки |
Сервисная сетка | Нет из коробки | Сетка приложений AWS (на основе Envoy) | Istio (из коробки, но бета) |
Поддержка DNS | Настройка CoreDNS | CoreDNS + Route53 внутри VPC | CoreDNS + Облачный DNS Google |
Что касается сети, то три облачных провайдера очень близки друг к другу. Все они позволяют клиентам реализовывать сетевые политики, например, с помощью Calico. Что касается балансировки нагрузки, все они реализуют свою интеграцию со своими собственными ресурсами балансировщика нагрузки и предоставляют инженерам выбор того, что использовать.
Основное отличие, найденное здесь, основано на добавленной стоимости сервисной сетки. AKS не поддерживает сетку служб по умолчанию (хотя инженеры могут установить Istio вручную). AWS разработала собственную сетку сервисов под названием App Mesh. Наконец, Google выпустила собственную интеграцию с Istio (хотя она все еще находится в стадии бета-тестирования), которую клиенты могут добавить непосредственно при создании кластера.
Лучший выбор: GKE
Масштабируемость и производительность
Сервисный аспект | АКС | ЭКС | ГКЭ |
---|---|---|---|
Узлы на голом металле | Нет | да | Нет |
Максимальное количество узлов на кластер | 1000 | 1000 | 5000 |
Кластер высокой доступности | Нет | Да для плана контроля, вручную для работников в Аризоне | Да через региональный кластер, master и worker реплицируются |
Автоматическое масштабирование | Да через автомасштабирование кластера | Да через автомасштабирование кластера | Да через автомасштабирование кластера |
Вертикальное автомасштабирование Pod | Нет | да | да |
Пулы узлов | да | да | да |
Узлы графического процессора | да | да | да |
Локально | Доступно через Azure ARC (бета-версия) | Нет | GKE локально через Anthos GKE |
Что касается производительности и масштабируемости GKE, AKS и EKS, GKE, похоже, впереди. Действительно, он поддерживает самое большое количество узлов (5000) и предлагает обширную документацию о том, как правильно масштабировать кластер. Все функции для обеспечения высокой доступности доступны и легко настраиваются. Более того, GKE недавно выпустила Anthos, проект по созданию экосистемы вокруг GKE и его функций; с Anthos вы можете развернуть GKE локально.
Тем не менее, у AWS есть ключевое преимущество: только он позволяет узлам без операционной системы запускать ваш кластер Kubernetes.
По состоянию на июнь 2020 г. в AKS отсутствует высокая доступность для мастера, что является важным аспектом, который следует учитывать. Но, как всегда, это может скоро измениться.
Лучший выбор: GKE
Безопасность и мониторинг
Сервисный аспект | АКС | ЭКС | ГКЭ |
---|---|---|---|
Шифрование секретов приложений | Нет | Да, возможно через AWS KMS | Да, возможно через Cloud KMS |
Согласие | HIPAA, SOC, ISO, PCI DSS | HIPAA, SOC, ISO, PCI DSS | HIPAA, SOC, ISO, PCI DSS |
RBAC | да | Да, и сильная интеграция с IAM | да |
Мониторинг | Функция работоспособности контейнера Azure Monitor | Мониторинг уровня управления Kubernetes, подключенный к Cloudwatch, метрики Container Insights для узлов | Мониторинг Kubernetes Engine и интеграция с Prometheus |
С точки зрения соответствия все три облачных провайдера эквивалентны. Однако с точки зрения безопасности EKS и GKE обеспечивают еще один уровень безопасности благодаря встроенным службам управления ключами.
Что касается мониторинга, Azure и Google Cloud предоставляют собственную экосистему мониторинга вокруг Kubernetes. Стоит отметить, что приложение от Google недавно было обновлено для использования Kubernetes Engine Monitoring, специально разработанного для Kubernetes.
Azure предоставляет собственную систему мониторинга контейнеров, которая изначально создавалась для базовой экосистемы контейнеров, отличной от Kubernetes. Они добавили мониторинг некоторых показателей и ресурсов, характерных для Kubernetes (работоспособность кластера, развертывания) — в режиме предварительного просмотра по состоянию на июнь 2020 года.
AWS предлагает упрощенный мониторинг плоскости управления непосредственно в Cloudwatch. Для мониторинга рабочих процессов вы можете использовать метрики Kubernetes Container Insights, предоставляемые через специальный агент CloudWatch, который вы можете установить в кластере.
Лучший выбор: GKE
Экосистема
Сервисный аспект | АКС | ЭКС | ГКЭ |
---|---|---|---|
Торговая площадка | Azure Marketplace (но без четкой интеграции с AKS) | AWS Marketplace (более 250 приложений) | Google Marketplace (более 90 приложений) |
Поддержка инфраструктуры как кода (IaC) | Модуль терраформ Доступный модуль | Модуль терраформ Доступный модуль | Модуль терраформ Доступный модуль |
Документация | Слабое, но полное и сильное сообщество (более 2000 сообщений Stack Overflow) | Не очень тщательное, но сильное сообщество (более 1500 постов о переполнении стека) | Обширная официальная документация и очень сильное сообщество (более 4000 сообщений Stack Overflow) |
Поддержка командной строки | Полный | Полный, а также специальный отдельный инструмент eksctl (описан ниже) | Полный |
С точки зрения экосистем, три провайдера имеют разные сильные стороны и активы. AKS теперь имеет очень полную документацию по своей платформе и занимает второе место по количеству сообщений в Stack Overflow. У EKS наименьшее количество сообщений в Stack Overflow, но он извлекает выгоду из сильных сторон AWS Marketplace. GKE, как самая старая платформа, имеет наибольшее количество сообщений на Stack Overflow и приличное количество приложений на своей торговой площадке, а также самую полную документацию.

Лучшие варианты: GKE и EKS
Цены
Сервисный аспект | АКС | ЭКС | ГКЭ |
---|---|---|---|
Ограничение бесплатного использования | 170 долларов | Не подходит для уровня бесплатного пользования | 300 долларов |
Стоимость плоскости управления Kubernetes | Бесплатно | 0,10 $/час | 0,10 доллара США в час (июнь 2020 г.) |
Сниженная цена (спотовые инстансы/выгружаемые узлы) | да | да | да |
Примерная цена за один месяц | $342 3 узла D2 | 300 долларов 3 узла t3.large | 190 долларов 3 узла n1-стандарт-2 |
Что касается цены в целом, то даже с учетом того, что GKE решила ввести цену в размере 0,10 доллара США в час для любого кластера, оно остается самым дешевым облаком. Это благодаря специфике Google — скидкам на постоянное использование, которые применяются всякий раз, когда ежемесячное использование ресурсов по запросу достигает определенного минимума.
Важно отметить, что примерная строка цены не учитывает трафик к кластеру Kubernetes, за который может взимать плату поставщик облачных услуг.
Причина, по которой AWS не позволяет использовать уровень бесплатного пользования для тестирования кластера EKS, заключается в том, что для EKS требуются машины большего размера, чем для уровня tX.micro, а почасовая оплата EKS не относится к уровню бесплатного пользования.
Тем не менее, тестирование любого из этих управляемых вариантов Kubernetes с приличной нагрузкой по-прежнему может быть экономичным с использованием спотовых/вытесняемых узлов каждого облачного провайдера — эта тактика легко сэкономит от 80 до 90 процентов от окончательной цены. (Конечно, на таких машинах не рекомендуется запускать производственные нагрузки с отслеживанием состояния!)
Рекламируемые функции и преимущества Google
Если посмотреть на различные рекламируемые функции в Интернете, кажется, что существует корреляция между тем, как долго управляемая версия Kubernetes находится на рынке, и количеством функций. Как уже упоминалось, то, что Google был инициатором проекта Kubernetes, кажется неоспоримым преимуществом, что привело к лучшей и более сильной интеграции с собственной облачной платформой.
Но AKS и EKS не следует недооценивать по мере их взросления; оба могут воспользоваться своими уникальными особенностями. Например, AWS — единственная компания, которая имеет интеграцию узлов с нуля, а также может похвастаться самым большим количеством приложений на своем рынке.
Теперь, когда рекламируемые функции для каждого предложения Kubernetes ясны, давайте углубимся в некоторые практические тесты.
Kubernetes: AWS, GCP и Azure на практике
Реклама — это одно, но как разные платформы сравниваются, когда дело доходит до обслуживания производственных нагрузок? Как облачный инженер, я знаю, насколько важно время, необходимое для создания и отключения кластера при внедрении инфраструктуры как кода. Но я также хотел изучить возможности каждого интерфейса командной строки и прокомментировать, насколько легко (или нет) каждый облачный провайдер создает кластер.
Пользовательский опыт создания кластера
АКС
В AKS создание кластера аналогично созданию экземпляра в AWS. Просто найдите меню AKS и просмотрите последовательность различных меню. После проверки конфигурации можно создать кластер в два этапа. Это очень просто, и инженеры могут легко и быстро запустить кластер с настройками по умолчанию.
ЭКС
Создание кластера определенно более сложно для EKS, чем для AKS. Прежде всего, и по умолчанию AWS требует сначала обратиться в IAM, чтобы создать новую роль для плоскости управления Kubernetes и назначить для нее инженера. Важно также отметить, что это создание кластера не включает создание узлов, поэтому, когда я измерил в среднем 11 минут, это только для создания мастера. Создание группы узлов — это еще один шаг для администратора, которому снова нужна роль для рабочих с тремя необходимыми политиками, которые нужно настроить через панель управления IAM.
ГКЭ
Для меня опыт создания кластера вручную наиболее приятен на GKE. Найдя Kubernetes Engine в Google Cloud Console, нажмите, чтобы создать кластер. Различные категории настроек отображаются в меню слева. Google предварительно заполнит новый кластер легко модифицируемым пулом узлов по умолчанию. И последнее, но не менее важное: у GKE самое быстрое время создания кластера, что приводит нас к следующей таблице.
Время создать кластер
Сервисный аспект | АКС | ЭКС | ГКЭ |
---|---|---|---|
Размер | 3 узла (Ds2-v2), по 2 виртуальных ЦП на каждом, 7 ГБ ОЗУ | 3 узла t3.large | 3 узла n1-стандарт-2 |
Время (м:сс) | В среднем 5:45 для полного кластера | 11:06 для мастера плюс 2:40 для группы узлов (всего 13:46 для полного кластера) | Среднее 2:42 для полного кластера |
Я провел эти тесты в одном и том же регионе (Франкфурт и Западная Европа для AKS), чтобы устранить возможное влияние этой разницы на время нереста. Я также попытался выбрать одинаковый размер узлов для кластера: три узла, каждый из которых имеет два виртуальных ЦП и семь или восемь ГБ памяти, стандартный размер для запуска небольшой нагрузки на Kubernetes и начала экспериментов. Я создал каждый кластер три раза, чтобы вычислить среднее значение.
В этих тестах GKE оставался далеко впереди со временем нереста всегда менее трех минут.
Kubernetes: обзор AWS, GCP и Azure CLI
Не все интерфейсы командной строки одинаковы, но в данном случае все три интерфейса командной строки фактически являются модулями более крупного интерфейса командной строки. Каково это — приступить к работе с набором инструментов CLI каждого облачного провайдера?
AKS CLI (через az
)
После установки инструментов az
, а затем модуля AKS (через az aks install-cli
) инженеры должны авторизовать интерфейс командной строки для связи с учетной записью Azure проекта. Это вопрос получения учетных данных для обновления локального файла kubeconfig с помощью простого az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
.
Аналогично, чтобы создать кластер: az aks create --resource-group myResourceGroup --name myAKSCluster
EKS CLI (через aws
или eksctl
)
В AWS мы находим другой подход — есть два разных официальных инструмента CLI для управления кластерами EKS. Как всегда, aws
может подключаться к ресурсам AWS, особенно к кластерам. Получить учетные данные в локальный kubeconfig можно с помощью: aws eks update-kubeconfig --name cluster-test
.
Однако инженеры также могут использовать eksctl
, разработанный Weaveworks и написанный на Go, для простого создания кластера EKS и управления им. Основное преимущество EKS для облачных инженеров заключается в том, что они могут комбинировать его с файлами конфигурации YAML для создания инфраструктуры как кода (IaC), поскольку он работает с CloudFormation. Это определенно полезно учитывать при интеграции кластера EKS в более крупную инфраструктуру на AWS.
Создать кластер через eksctl
так же просто, как eksctl create cluster
, никаких других параметров не требуется.
Интерфейс командной строки GKE (через gcloud
)
Для GKE шаги очень похожи: установите gcloud
, затем выполните аутентификацию через gcloud init
. Оттуда открываются возможности: инженеры могут создавать, удалять, описывать, получать учетные данные, изменять размер, обновлять или обновлять кластер или составлять список кластеров.
Синтаксис для создания кластера с помощью gcloud
прост: gcloud container clusters create myGCloudCluster --num-nodes=1
AKS, EKS и GKE: результаты тест-драйва
На практике мы можем видеть, что GKE, безусловно, быстрее всех запускает базовый кластер как с точки зрения простоты консоли, так и с точки зрения времени создания кластера. С точки зрения UX, с кнопкой подключения рядом с кластером, что также упрощает подключение к кластеру.
С точки зрения инструментов CLI три облачных провайдера реализовали аналогичные функции; однако мы можем сделать упор на дополнительный инструмент, предоставляемый Weaveworks для EKS. eksctl
— это идеальный инструмент для реализации модели «инфраструктура как код» поверх существующей инфраструктуры AWS, объединяющей другие сервисы с EKS.
Управляемые предложения Kubernetes продвигаются вперед: AWS, GCP и Azure
Для тех, кто только начинает знакомиться с миром Kubernetes, я рекомендую GKE, так как он самый простой. Его легко настроить, он имеет простой и быстрый пользовательский интерфейс для создания и хорошо интегрирован в экосистему Google Cloud Platform.
Несмотря на то, что AWS был последним, кто присоединился к гонке, у него есть несколько неоспоримых преимуществ, таких как «голые металлические» узлы и тот простой факт, что он интегрирован с провайдером с наибольшей долей разума.
Наконец, AKS добился больших успехов с момента своего создания. Паритет инструментов и функций, скорее всего, не заставит себя долго ждать, тем временем оставляя место для инноваций. И, как и в случае любого управляемого предложения Kubernetes, для тех, кто уже использует родительскую платформу, интеграция будет преимуществом.
После того, как команда выбрала облачного провайдера Kubernetes, может быть интересно посмотреть на опыт других команд, особенно на неудачи. Эти вскрытие отражают реальные случаи и всегда являются хорошей отправной точкой для разработки собственных передовых методов. Я с нетерпением жду ваших комментариев ниже!