Вопрос о размещении в сети Kubernetes-приложений и их поддержке волнует многих разработчиков и руководителей организаций всех величин – от небольших стартапов до крупных организаций. Говоря о Kubernetes с точки зрения разработчика, на ум приходят два вопроса: как размещать подобные приложения и что за приложения размещают, используя Kubernetes? А с точки зрения администратора и бэкендера главный вопрос – как в итоге будет выглядеть итоговая архитектура программы?
В этой статье мы выясним, как деплоить Kubernetes-приложения. Рассмотрим популярные облачные сервисы, их плюсы и минусы.
Как деплоится Kubernetes?
Существует множество способов разместить Kubernetes в сети как для организаций, так и для разработчиков-одиночек. Наиболее популярные из них:
-
Kubernetes на базе облачного сервиса,
-
Kubernetes на локальной машине с использованием Minikube и Docker Desktop,
-
Kubernetes на базе мини-компьютера Raspberry Pi с использованием утилит в духе k3s,
-
Kubernetes на базе платформ наподобие OpenStack или OpenShift.
Вы наверняка не раз встретите Kubernetes, запущенный на паре-тройке виртуальных машин, управляемых «вручную». Такие системы строят при помощи ПО Kubeadm и его аналогов.
О чем стоит подумать
Когда вы размещаете Kubernetes-софт в программную среду любых масштабов, стоит задуматься о нескольких важных моментах.
Во-первых, кто будет заниматься менеджментом размещенного ПО. Если у вас небольшая команда разработчиков, то пусть Kubernetes «крутится» где-то в облаке. Строить инфраструктуру на базе отдельных виртуальных машин не имеет никакого смысла. Ключевой задачей для вас все равно будет быстрое размещение приложений и настройка сети (а также поддержание инфраструктуры в рабочем состоянии).
Если ваша команда состоит из большого количества разработчиков, то лучше отдать предпочтение утилитам в духе OpenShift. По крайней мере, многие компании выбирают подобные решения, так как они не зависят от конкретных облачных сервисов.
Если же вы просто хотите поиграться с Kubernetes и обучиться основам работы с ним, то идеальным вариантом станет Minikube. Совсем уж заядлым энтузиастам подойдет мини-компьютер Raspberry Pi с k3s. Идеально для тех, кто хочет не только хорошо понять принципы взаимодействия с Kubernetes, но и похвастаться экспериментами.
Обзор главных Kubernetes-сервисов
Теперь вы знаете основные способы размещения Kubernetes-приложений в сети, а значит, можно перейти к краткому обзору облачных сервисов, которые вам в этом помогут. Сразу отметим, что в 90% случаях эти сервисы решают одну и ту же задачу. При этом есть мелкие нюансы, о которых стоило бы знать.
Azure Kubernetes Service
AKS – это Kubernetes-сервис, созданный специально для размещения k8s в облачном сервисе Microsoft. Worker-ноды Kubernetes здесь запускаются в виртуальных машинах Azure. Управлять ими можно через любые средства и утилиты (Azure portal, PowerShell, Azure CLI, Terraform, ARM и т.д.), которые можно подключить к облаку через API Azure.
Размещая k8s в Azure, помимо стандартного набора возможностей Kubernetes, вы получите все фишки облачного сервиса Microsoft, включая Azure Networking, Azure Active Directory и систему мониторинга.
AKS – отличная опция, если вы хотите быстро развернуть полноценный Kubernetes-кластер. Контроля над всей системой не так много, как в случае с AWS (EKS), но для не особо требовательных пользователей этого должно быть достаточно.
Elastic Kubernetes Service
EKS – это реализация облачного Kubernetes-сервиса от компании Amazon. Как и в случае с AKS, выбрав EKS, не приходится переживать по поводу настройки API и других мелочах. Просто запускаете ноду как EC2 инстанс и начинаете работу. Создание нод происходит через Node Pool. Node Pool содержит в себе EC2-инстансы, в которых запущены worker-ноды Kubernetes.
Управлять EKS можно через:
- AWS Portal,
- Terraform,
- AWS CLI, а также другие программные инструменты с поддержкой API AWS.
EKS прославился своей сложностью. Эта сложность далеко не всем по душе. Кто-то из разработчиков ищет более абстрактные решения, а кто-то находится в поисках ПО, которое «вскрывает» доступ к большему количеству внутренних сущностей для контроля над всей инфраструктурой. В общем, выбирая EKS, вы немного усложняете себе жизнь, но получаете возможность более скрупулезно настроить все рабочие механизмы под себя.
Если говорить о так называемом бессерверном Kubernetes, EKS может предложить инструмент под названием Fargate Profiles. Он позволяет не тратить время на настройку EC2-инстансов. Остается лишь деплоить ПО.
Google Kubernetes Engine
Многие в курсе, что Kubernetes разработали в Google. По факту Google использовала Kubernetes внутри компании около 15 лет, пока не сделала этот инструмент достоянием народа. Отсюда и преференции в сторону GKE. Это действительно лучшее облачное решение для размещения Kubernetes-приложений. GKE, наверное, самый простой и быстрый способ задеплоить k8s. При этом GKE предоставляет удобный инструментарий для управления всем этим добром.
Чтобы управлять GKE, можно использовать все вышеперечисленные методы. Также можно подключить текстовую утилиту gcloud.
Бессерверный Kubernetes тоже поддерживается. Здесь есть функция AutoPilot. Суть его та же, что и у Fargate Profiles – упрощение взаимодействия с нодами. Меньше настроек, больше времени для деплоя программ.
Так и что выбрать?
Реальность такова, что все описанные сервисы решают одну и ту же задачу. Вы сами вольны выбирать, что вам по душе. А если не хочется привязываться к конкретному облаку, то смотрите в сторону OpenShift и OpenStack, чтобы обрести независимость от гигантов типа Google и Microsoft.
Оригинал: Michael Levan
Комментарии