Сравнение Managed Kubernetes сервисов: GKE, EKS и AKS

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


Сравнение трех самых популярных Managed Kubernetes платформ.


Kubernetes уже стал синонимом оркестрации контейнеров, поэтому каждый облачный провайдер активно разрабатывает под него свои управляемые сервисы. Чтобы выбрать один из них, нужно как следует все изучить и учесть много факторов.
В статье сравним Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE) и Azure Kubernetes Service (AKS).


Примечание. Сервисы развиваются очень быстро, так что к моменту прочтения этого разбора некоторые данные могут устареть.


Вступление


Почти все управляемые сервисы Kubernetes существуют меньше трех лет, но одно из решений появилось гораздо раньше остальных. Так как Kubernetes изначально был разработан в Google, неудивительно, что Google Kubernetes Engine опередил конкурентов на три года — он был выпущен еще в 2015. Ближайшие конкуренты, AKS и EKS, вышли только в 2018, поэтому GKE пока остается самой зрелой и функциональной платформой.


Azure Kubernetes Service и Amazon Elastic Kubernetes Service выпущены почти в то же время, что и сервисы большинства остальных облачных провайдеров, то есть были примерно в равных условиях. Появились они относительно недавно, но развиваются довольно быстро.


Сравнение функций



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


Мониторинг


GKE и AKS напрямую интегрируются со своими инструментами мониторинга. У них есть современные продуманные интерфейсы, в которых удобно просматривать логи и использование ресурсов, а еще настраивать оповещения. В GCP, конечно, самый удобный интерфейс, но и у Azure с этим все неплохо.


В EKS функции логирования и мониторинга устанавливаются отдельно через CloudWatch Container Insights. В принципе, CloudWatch легко интегрируется и содержит все нужные метрики, но у него очень неудобный, устаревший и запутанный интерфейс. Лучше выбрать стороннее решение.


Бессерверные вычисления


Для бессерверных вычислений у GKE есть Cloud Run for Anthos. Вы получаете все преимущества управляемой бессерверной платформы Cloud Run, включая развертывания высокомасштабируемых рабочих нагрузок. Масштаб можно сократить до нуля и быстро изменить по запросу. При этом вы используете ресурсы своего кластера, а не управляемую инфраструктуру Google Cloud Run. Впрочем, это не влияет на запуск ваших обычных рабочих нагрузок и развертываний Kubernetes. Просто у вас будет вариант специально для рабочих нагрузок, которым лучше подойдет бессерверная модель.


В AKS бессерверные вычисления доступны через виртуальные ноды. Запускайте поды Kubernetes через Azure Container Instances, а не на полноценных виртуальных машинах, чтобы быстрее и точнее менять масштаб. В отличие от Cloud Run for Anthos, этот вариант распространяется на имеющиеся рабочие нагрузки Kubernetes, а не существует отдельно. То есть вы можете задействовать виртуальные ноды, просто назначив им конкретные рабочие нагрузки.


EKS интегрируется с Fargate — бессерверной платформой Amazon на базе контейнеров. Этот вариант похож на виртуальные ноды AKS — вы запускаете поды как инстансы контейнеров, а не как полноценные виртуальные машины. Правда, для Fargate нужен Amazon Application Load Balancer (ALB), а виртуальные ноды Azure обходятся любым балансировщиком нагрузки.


Инструменты для разработчиков


Google предлагает Cloud Code, расширение VS Code или IntelliJ, чтобы разворачивать, отлаживать и контролировать кластер прямо в IDE или редакторе кода. Сюда входит прямая интеграция с Cloud Run и Cloud Run for Anthos.


У Microsoft есть похожий функционал в расширении Kubernetes в VS Code, а еще в AKS есть уникальная функция — Bridge to Kubernetes. С ней вы выполняете локальный код как сервис в кластере, при этом для запуска и отладки не нужно реплицировать зависимости в локальную среду.


Расширения от Google и Microsoft подходят для любого кластера Kubernetes. Базовые функции доступны через kubectl или Kubernetes API, поэтому и с кластерами EKS они будут работать, а вот отдельных инструментов разработки для EKS пока нет.


Подведем итоги


Google Kubernetes Engine (GKE)


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



Рабочие нагрузки GKE в Google Cloud Console


Неудивительно, что GKE задает планку для управляемых сервисов Kubernetes, ведь это изначально была разработка Google. И у них была фора в три года.


GKE не требует трудоемкой настройки, имеет встроенные инструменты логирования и мониторинга, использует превосходный Stackdriver от Google для управления производительностью и показывает всю информацию о рабочих нагрузках и использовании ресурсов в веб-консоли GCP. Вы можете полностью контролировать конфигурацию кластера через GKE CLI, так что создавать кластеры и управлять ими будет совсем не сложно. В общем, просто запускайте кластеры GKE и на всем готовом с ходу приступайте к развертыванию рабочих нагрузок.


Правда, Google столько всего делает за вас, что настроить каждую деталь под себя не получится. В остальном, в GKE просто не к чему придраться. Это однозначно лучшее решение для управления Kubernetes.


Azure Kubernetes Service (AKS)


Отличное готовое решение с мощными инструментами разработки и быстрыми обновлениями Kubernetes. Это очевидный выбор, если вы уже используете Microsoft/Azure, и неплохая альтернатива GKE, если нет.



Информация о кластере AKS на портале Azure


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


Минус Azure в том, что это самая ненадежная из трех главных облачных платформ. По аптайму и числу отключений Azure заметно уступает AWS и GCP. Нельзя сказать, что Azure совсем никуда не годится — все-таки его использует немало крупных компаний, — просто помните об этой проблеме.


Если закрыть глаза на этот недостаток, AKS на ура справляется с задачей. GKE, конечно, опережает почти во всем, но у Azure есть пара преимуществ. Если вы уже используете Azure или инструменты Microsoft, вроде 365 или Active Directory, берите AKS. У него есть что предложить и другим пользователям — например, более низкая цена и бесплатные control plane, быстрые обновления Kubernetes, полезные инструменты разработки с VS Code и удобные бессерверные вычисления.


Amazon Elastic Kubernetes Service (EKS)


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



Кластер EKS в AWS Management Console


По сравнению с GKE и AKS, где за вас почти все делает провайдер, в Amazon Elastic Kubernetes Service (EKS) придется поработать руками. Вы будете долго и старательно настраивать политики и роли IAM и устанавливать разные компоненты. По умолчанию никакой информации о кластере и рабочих нагрузках вы не получаете. Веб-интерфейс и CLI не балуют обилием доступных задач.


Сторонние инструменты, вроде terraform-aws-eks от Terraform или CLI eksctl, позволяют частично восполнить этот досадный пробел, автоматизируя и упрощая создание кластера и управление им. С eksctl, например, вы получаете полноценный CLI, которым не может похвастаться AWS. Но это не нативные инструменты, так что набор возможностей ограничен и в итоге все лежит на вас.


Выбирайте EKS, если хотите сами все контролировать. Здесь у вас больше свободы и можно настроить каждую деталь, если вдруг нужно. Кстати, EKS — это единственный сервис в нашем списке, который поддерживает bare-metal и ваши собственные образы.
Главное преимущество EKS, конечно, в том, что это сервис AWS — самой мощной, зрелой и надежной облачной платформы со множеством популярных сервисов и обширным сообществом разработчиков.


Заключение


Если вы просто ищете лучшее решение для Kubernetes, это определенно GKE. Никаких лишних движений, очень много функций, легкое обслуживание, удобный веб-интерфейс и CLI.


AKS уверенно удерживает вторую строчку — автоматизация, бессерверные вычисления и полезные функции разработки в VS Code, притом с бесплатной панелью управления.


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

Источник: https://habr.com/ru/company/southbridge/blog/532930/


Интересные статьи

Интересные статьи

Для Kubernetes есть несколько вариантов обновления ресурсов: apply, edit, patch и replace. С тем, что каждый из них делает и когда их применять, есть путаница. Давайте разберемся. ...
Лучшие практики Kubernetes. Создание небольших контейнеров Лучшие практики Kubernetes. Организация Kubernetes с пространством имен Лучшие практики Kubernetes. Проверка жизнеспособно...
Сегодня мы представляем открытую для тестирования бета-версию Managed Databases для PostgreSQL, использование которой будет бесплатным на период бета-тестирования. Базы данных — один из наиб...
В интернет-магазинах, в том числе сделанных на готовых решениях 1C-Битрикс, часто неправильно реализован функционал быстрого заказа «Купить в 1 клик».
Прим. перев.: Dailymotion — один из крупнейших в мире сервисов хостинга видео и потому заметный пользователь Kubernetes. В этом материале системный архитектор David Donchez делится итогами со...