В каноничном видео человек грустит, пытаясь ответить на вопрос, зачем ему Kubernetes. В этом тексте на него мы не ответим, зато поможем разобраться с базовыми концепциями, связанными с оркестратором. Будет полезно тем, кто не работает с кубиком напрямую, но кодит приложение под Docker/Kubernetes. И тем, кому нужно будет поддержать умную беседу на кофе-пойнте. Под катом разбираем понятия Cloud Native, микросервисов и готовых кластеров 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». Вы узнаете на практике, как работать с контейнерами, развернуть свое приложение и настроить мониторинг. Все материалы бесплатны, а их изучение займет около двух часов.

Комментарии (0)