В каноничном видео человек грустит, пытаясь ответить на вопрос, зачем ему Kubernetes. В этом тексте на него мы не ответим, зато поможем разобраться с базовыми концепциями, связанными с оркестратором. Будет полезно тем, кто не работает с кубиком напрямую, но кодит приложение под Docker/Kubernetes.
Чем микросервисная архитектура отличается от монолита
В последнее время компании отказываются от традиционного подхода в архитектуре приложений. Монолит перестает справляться с быстрым масштабированием проектов, а компоненты при «выгорании» часто нарушают работу всего сервиса. Даунтаймы крайне опасны для любого бизнеса, поэтому в качестве альтернативы компании переходят на микросервисы и контейнеризацию, а для управления ими используют Kubernetes.
Как компании переходят с монолитной архитектуры на микросервисную →
Почему для микросервисов выбирают Kubernetes
Ускорение разработки
С Kubernetes можно быстро развернуть новый кластер и выполнить обновление отдельных частей приложения. Это ускорит создание новых сервисов и их релиз.
Автомасштабирование мощностей
Kubernetes автоматически масштабирует количество нод в зависимости от потребностей приложения. В момент пиковой нагрузки сервер получит нужные мощности, а в период простоя — отключит лишнее.
Встроенные инструменты для автоматизации
Kubernetes содержит множество встроенных команд для автоматизации повседневных операций — развертывание, масштабирование и управление контейнерами. Это сокращает количество рутинных задач и упрощает разработчикам жизнь.
Особенности Kubernetes иногда диктуют свои правила при подготовке приложений для переезда в k8s. Есть ряд правил, которые важно иметь в виду разработчикам. Восемь из них подробно осветил архитектор отдела администрирования сервисов Selectel.
Читать →
Что такое Cloud Native
Сообщество определяет Cloud Native как подход для создания и запуска приложений, который обязательно использует контейнеры, service mesh, микросервисы и неизменяемую IT-инфраструктуру. В таком подходе к управлению ресурсами компоненты заменяются, а не изменяются. Приложение или услуги фактически развертываются заново при каждом изменении.
Для эффективного деплоя сервисов в облачном приложении должны быть реализованы несколько основных принципов Cloud Native:
- Контейнеризация и оркестрация,
- Следование практикам CI/CD,
- Отказоустойчивость и автохилинг,
- Масштабируемость ресурсов в зависимости от нагрузки,
- Наличие систем мониторинга состояний и производительности.
С чего начинался Cloud Native подход в архитектуре →
Почему для Cloud Native выбирают Kubernetes
Kubernetes можно считать сердцем всего подхода Cloud Native, поскольку технология включает в себя все основные положения подхода.
Непрерывная доставка CI/CD
Автоматическая сборка и доставка кода из Git в инфраструктуру. Непрерывность достигается за счет того, что разработчики делают это без участия администратора инфраструктуры.
Сокращение времени и усилий
За счет автоматизации внедрения кода в k8s компании могут:
- добиться непрерывной интеграции CI/CD,
- выпускать релизы с нулевым временем простоя,
- проверять на корректность отдельные модули исходного кода ПО.
Развертывать самим или нет? Вот в чем вопрос
Многим кажется, что self hosted-решение намного дешевле, чем готовая услуга у провайдера. Но не все так однозначно.
Результаты сравнения self-hosted и Managed Kubernetes →
Кому подойдет self-hosted-решения
Тем, кому нужен полный контроль
У self-hosted высокая степень кастомизации и открытый доступ ко всем уровнем кластера Kubernetes. Это помогает специалистам свободно менять конфигурации объектов и настройки облачного хостинга.
Опытным специалистам
Для self-hosted нужны специалисты с серьезными навыками, поскольку они самостоятельно настраивают работу control plane, следят за ее работоспособностью и отказоустойчивостью.
Крупным компаниям
У больших компаний есть ресурсы для самостоятельного развертывания инфраструктуры. Они могут нанять квалифицированных кандидатов, создать DevOps-команды и выделить бюджет на разработку. Это дольше и сложнее, зато кластеры полностью интегрированы в инфраструктуру в необходимых компании сценариях.
Кому подойдет Managed Kubernetes
Компаниям, которые хотят быстрый старт в k8s
Готовые кластеры актуальны практически для любой компании: от больших высоконагруженных проектов до небольших стартапов. Это хороший способ снизить расходы и количество ошибок при самостоятельном развертывании Kubernetes. Провайдер предоставит все необходимые ресурсы — мощности облачных серверов, диски, обеспечит отказоустойчивость решения и добавит необходимую автоматизацию.
Специалистам с разным уровнем подготовки
Managed Kubernetes освобождает пользователей от необходимости глубокого понимания и управления техническими аспектами инфраструктуры. В остальном вся техническая часть находится в зоне ответственности облачного провайдера. Таким образом, бизнес получает возможность сосредоточиться на самом продукте и заботе о клиентах, а не беспокоиться об инфраструктуре.
Тем, кто хочет избавить себя от рутинных задач
Managed Kubernetes позволяет сосредоточиться на разработке и управлении приложениями, не тратя время и усилия на управление и поддержку инфраструктуры. В работу провайдера входит автоматическое обновление кластера, масштабирование, отказоустойчивость и другие рутинные операции.
Только ли Kubernetes? Сравнение с Docker Swarm
При выборе оркестратора контейнеров компании часто отдают предпочтение Kubernetes. Однако это решение подходит не всем. Порог входа в k8s высок, а преимущества не всегда очевидны. В ряде случае эффективнее будет использовать альтернативные оркестраторы — например, Docker Swarm.
Результаты сравнения K8s с Docker Swarm →
Кому подойдет Kubernetes
Рассмотрим, для каких сфер Kubernetes будет хорошим решением.
Интернет-магазины
Маркетплейсы чувствительнее всего относятся к повышенным нагрузкам, например, во время акций или сезонного спроса. Для таких компаний подойдет автомасштабирование k8s: система периодически проверяет наличие ожидающих модулей и увеличивает размер кластера, если требуется больше ресурсов.
Игровые приложения на сложной микросервисной архитектуре
Быстрое поднятие новых кластеров, характерное для Kubernetes, обеспечивает доступность серверов, стабильный обмен данными и сохранение прогресса вне зависимости от откатов. Все это положительно влияет на пользовательский опыт игроков.
Сервисы, которые используют машинное обучение и Big Data
Для ML-экспериментов используется Kubeflow — инструмент, запускающий ML-конвейеры в кластерах Kubernetes. Он позволяет «изолировать» проведение различных экспериментов с помощью создания подов, а также автоматизировать выбор эталонных моделей. С его помощью специалисты могут проверять свои гипотезы и результаты на одном датасете, отбирать лучшие модели и не бояться «конфликтов» между экспериментами в пространстве имен.
Кому подойдут альтернативные решения
Если компания не работает с большим объемом нагрузок, можно выбрать Docker Swarm. Гибкость настроек k8s для таких проектов будет только мешать и усложнять релизы. А стоимость доработок для нетипичных задач в Docker Swarm будет ниже, чем управление инфраструктурой своими силами с помощью k8s.
Заключение
Готово! Теперь вы знакомы с базовыми концепциями работы микросервисов и оркестраторов. Если хотите глубже изучить тему, советуем наш курс «Первые шаги в Kubernetes». Вы узнаете на практике, как работать с контейнерами, развернуть свое приложение и настроить мониторинг. Все материалы бесплатны, а их изучение займет около двух часов.