В 2021 году компания Statista провела опрос среди разработчиков, специалистов по эксплуатации и безопасности, спросив у них: «Используете ли вы Kubernetes?». Ответили положительно 46% респондентов, которые занимали разные должности в крупных и небольших компаниях из разных отраслей.
Рассказываем, что такое Kubernetes и услуга Managed Kubernetes, кому подойдёт эта услуга и почему она выгодна бизнесу, а также как мигрировать на неё.
Технология контейнеризации экономит ресурсы и упрощает разработку и развёртывание
Kubernetes — это программное обеспечение для оркестрации, или управления контейнерами. Контейнер представляет собой изолированную среду, в которую упаковывается приложение со всеми его зависимостями. С точки зрения самого приложения оно выполняется как в обычной операционной системе.
Kubernetes устанавливают на сервер или на кластере серверов и разворачивают на нём рабочие нагрузки. Kubernetes самостоятельно решает задачи, связанные с созданием контейнеров, их запуском, масштабированием и управлением.
Технология контейнеризации помогает:
- экономить ресурсы: контейнеры не несут всей рабочей нагрузки экземпляра операционной системы, а только её части; контейнеры меньше весят и тратят меньше ресурсов;
- увеличить скорость разработки: упакованные в контейнер приложения можно запускать на любом устройстве с необходимым ПО — их быстрее развёртывать и запускать; контейнеры отлично подходят для гибких методологий создания ПО — Agile и DevOps.
Контейнеризация упрощает разработку и развёртывание. Но управлять большим количеством контейнеров вручную сложно, поэтому разработчики используют Kubernetes.
Для внедрения Kubernetes у компании будет два пути:
- самостоятельное развёртывание кластера: создание и настройка серверной инфраструктуры и развёртывание на ней Kubernetes ⟶ нетривиальная задача;
- Managed Kubernetes — услуга для решения этой задачи: провайдер предоставляет клиенту развёрнутый кластер в облаке, поддерживает и обновляет его.
Расскажем подробнее об этой услуге, её плюсах и минусах и об общем алгоритме действий для её реализации.
Почему стоит выбрать Managed Kubernetes
Может показаться, что self-hosted — самостоятельно развёрнутый — Kubernetes лучше Managed Kubernetes по ряду рациональных факторов: дешевле, надёжнее и более настраиваемый. Эмоции тоже оказывают влияние на выбор — всё-таки свой кластер. Однако за этими плюсами скрываются и сложности — рассмотрим их в сравнении с услугой Managed Kubernetes.
Потребность в квалифицированных специалистах снижается
Первое, с чем столкнётся компания при желании создать self-hosted кластер, — это дефицит квалифицированных кадров. Kubernetes — сложная технология, которая требует квалификации не только на старте проекта, но и для его поддержки.
Не получится прочитать документацию с официального сайта и сразу приступить к работе. Профессионалов, которые действительно разбираются, на рынке немного.
Компания может уткнуться в HR-барьер: своих специалистов не хватает, а имеющиеся кадры, скорее всего, придётся взращивать годами.
Свой кластер Kubernetes создают крупные компании, для которых найти квалифицированных кандидатов среди сотрудников или на просторах профильных ресурсов не проблема.
В случае использования Managed Kubernetes компания не избавится от необходимости в квалифицированных сотрудниках, но сможет снизить эту потребность. Провайдер берёт на себя ряд обязательств, связанных с администрированием Kubernetes, позволяя заказчику сконцентрироваться на разработке и деплое.
Архитектура — в облаке
Вопрос архитектуры кластера — основополагающий, поскольку определяет степень отказоустойчивости и масштабируемости. Self-hosted кластеры разворачивают как на физических серверах — например, в собственном ЦОДе, так и в облаке — не путаем с Managed Kubernetes.
У физического сервера есть ряд преимуществ, например, скорость работы локальных дисков. К тому же своё железо — купленное или арендованное — в большинстве случаев быстрее окупается и предоставляет больший доступ к тонкой настройке. Но физическое оборудование приходится обслуживать, а его сложно масштабировать. Если нужно добавить новый под, но вычислительных ресурсов не хватает, придётся купить новый сервер.
Под — это основная рабочая единица в кластере, один или несколько контейнеров.
Облако нивелирует недостатки физического сервера — проще добавить вычислительной мощности для отказоустойчивости или новых подов. Но облако всё равно не решает проблемы с недостатком кадров.
При выборе Managed Kubernetes по умолчанию используется облако и его преимущества. Так решается вопрос с серверами, а первоначальная настройка кластера и подключение к нему систем хранения данных становится проще.
Через интерфейс, API и другие инструменты пользователь конфигурирует сервер, как ему нужно. К слову, обновление Kubernetes — одну из самых рискованных процедур — провайдер берёт на себя.
Несмотря на простоту первоначальной настройки, дальнейшая конфигурация кластера всё-таки ограничена. Не стоит забывать и о том, что у провайдера своя команда, которая занята другими проектами, да и производительность самого облака иногда страдает из-за действий провайдера и технических работ.
Кому подойдёт Managed Kubernetes и какие у него есть ограничения
Сервис Managed Kubernetes подойдёт малому и среднему бизнесу под малонагруженные проекты, которые не будут страдать из-за неточной настройки.
Managed Kubernetes помогает экономить деньги на поиск сотрудников, закупку оборудования и время на создание инфраструктуры.
Основные минусы Managed Kubernetes:
- зависимость от провайдера;
- техподдержка, которая может быть занята другими проектами;
- некоторые ограничения — например, на количество сетевых соединений;
- недостаточно точная и тонкая настройка Kubernetes.
- Научитесь настраивать оборудование, протоколы маршрутизации и проектировать безопасные корпоративные сети
- Отработаете навыки на практике: выполните 32 лабораторные работы и построите корпоративную сеть
- Освоите IT-профессию без навыков программирования и начнёте работать через 7 месяцев обучения
Как мигрировать на Managed Kubernetes
Конкретные действия для миграции на Managed Kubernetes зависят от первоначального состояния проекта.
Есть несколько типичных сценариев ↓
Приложения монолитны, контейнеризация не использовалась.
Приложения построены на микросервисной архитектуре:
- контейнеры не использовались;
- контейнеризация использовалась, но не в Kubernetes;
- уже есть кластер на Kubernetes, например, локальный.
Процесс миграции можно разделить на четыре основных этапа: подготовка кода, создание кластера, создание helm-чартов и миграция в облако.
Кратко разберём каждый этап.
Подготовка кода
Контейнеры плохо работают с монолитными приложениями, поэтому первый этап миграции — рефакторинг (переработка) кода и переход от монолитной архитектуры к микросервисной с учётом особенностей работы Kubernetes.
Проект необходимо научить работать:
- с локальными хранилищами данных — для stateful-приложений,
- с локальными кешами,
- в несколько реплик, или экземпляров.
Оптимальный вариант — разместить в Kubernetes не весь проект, а его части, как stateless-приложений.
Разница между stateless- и stateful-приложениями заключается в сохранении своего состояния — любой информации, необходимой для работы. Stateless-приложения не сохраняют такие данные, а stateful сохраняют. Проблема stateful-приложений и контейнеров связана с тем, что последние не позволяют сохранять информацию: для нормальной работы stateful-приложение нужно научить хранить данные вне контейнера.
Создание кластера
Исходя из требований проекта, необходимо подобрать конфигурацию кластера и создать его в облаке.
Стоит учитывать следующие моменты:
- географическая доступность,
- количество вычислительных ресурсов,
- мониторинг кластера,
- политики безопасности,
- число кластеров,
- постоянное хранилище данных.
Helm-чарты
Helm-чарт — это набор инструкций для создания экземпляра приложения в кластере Kubernetes.
Если на проекте не использовались оркестраторы или использовались, но отличные от Kubernetes, то helm-чарты создают с нуля. Если использовались Kubernetes-платформы, такие как OpenShift или Rancher, то helm-чарты подгоняют под Kubernetes.
Если уже использовался Kubernetes, то helm-чарты, скорее всего, не нужно серьёзно дорабатывать. Их изменение зависит от новой платформы и совместимости версий.
Миграция
Первое взаимодействие проекта и кластера — это тестирование. Необходимо проверить работу кластера при нагрузках, зафиксировать и обработать пограничные ситуации.
Проверка кластера сводится к следующим мероприятиям:
- нагрузочное тестирование,
- функциональное тестирование,
- проверка производительности,
- аудит безопасности кластера,
- интеграционное тестирование.
После проведения подготовки и тестирования можно переходить к миграции. По сути это процесс применения новых helm-чартов к созданному кластеру. Это можно осуществить как вручную, так и с помощью конвейера непрерывной интеграции и развертки. По итогу проверки работоспособности кластер будет готов к работе.
Материал изначально опубликован на habr.
Мнение автора и редакции может не совпадать. Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.