Зачем нужен Kubernetes?

Всем привет!
Я очень консервативный веб дев, в области давно но только недавно начал вникать в некоторые популярные технологии, в т.ч. контейнеризацию.
Освоил +- docker и docker compose, все идет хорошо, но остались незакрываемые вопросы документацией (либо потому что слишком глупые, либо возможно холиварные), и их может закрыть мне помочь только сообщество.
В корпах я не работал, представляю как делают там - смутно, поэтому палками прошу не бить.

1) docker compose умеет в виртуальные сети, перезапуск умирающих нод по любым причинам, логи, вся фигня - зачем существует кубернетес? допустим, запускать ноды по мере роста нагрузки и балансировать, чтоб не писать свои костыли для этого через апи докера? условно, собирая с нгинкса колво хитов и запуская с каждой новой тысячей отдельную ноду на которые нгинкс это всё балансит. именно с подобными задачами призван справляться кубер, давая удобный интерфейс?
2) допустим, сделал я проект в виде docker compose. сейчас чешу на впс, качаю докер, запускаю и все. удобство в том, что не нужны мои простыни инструкций, в которых иногда что-нибудь да идет не так. но православный ли это путь?)) как будто не просто ускорять развертывание и структурировать хранение проектов докер придумывали.
3) что делать, если внезапно такой изначально небольшой проект сильно разросся и пора распределяться на пару-тройку серверов? Сиди переписывай на кубер или почему не сделал сразу как надо?

Мои вопросы связаны с тем чтоб не попасть в оверкилл. Кажется, нахрена nginx'у с пхп, мариадб и паре утилитарных нод какие-то там куберы. Я в целом привык залетать на bare-metal с парой своих инструкций по установке lemp, но затем прочувствовал кайф докера, и сейчас хотелось бы использовать его грамотно, но без оверкиллов, и не использовать там где он вовсе не нужен.
Пока что сложилось впечатление что кубер нужен только тем, у кого железяк больше одной. Прав ли я?

большое спасибо!!!
  • Вопрос задан
  • 4617 просмотров
Решения вопроса 1
Кубер для крупных микросервисных проектов, где сервисов, ну, хотя бы десяток. Для одного маленького монолита преимуществ не будет.
Кубер нет смысла эксплуатировать в проде всего на одной ноде - все преимущества отказоустойчивости минус.
Какие преимущества кубера - развертывание сервисов в N инстансов на K серверов, выживаемость этих серивсов при отказе нескольких нод или инстансов, балансировки, обновления без даунтаймов (rolling update)... Там еще много всего что касается массированных развертываний.

Съехать с композов в кубер проблема незнаичительная, можно развиваться по мере необходимости
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Кубернетес - в первую очередь инструмент эксплуатации. Можете оставаться "консервативным веб девом", вообще практически его не касаясь - это забота админов.

Главное, чтобы вы представляли, чем разработка контейнеризованного приложения отличается - сборка в Докере, стейтлесс, пробы и т. д.
Ответ написан
@Nikon_NLG
Если утрировать, то кубер - это сервис по запуску контейнеров + виртуальная сеть поверх всех машин в кластере.

1. Если копнуть чуть глубже - вы можете в конфиге указать "хочу постоянное хранилище для базы". Какое именно это хранилище будет (S3, файлопомойка, перфокарты) - уже задача того кто кластер обслуживает. Или "запускать 1 веб и 1 редис на каждом физическом сервере" - этим будет заниматься кубер. Или "хочу 8 ядер для каждого экземпляра приложения". Заведовать ресурсами тоже будет кубер, как и перетаскивать приложения с сервера на сервер в отсутствии ресурсов (и перестраивая при этом сетевые запросы). И запускать новые экземпляры приложения в зависимости от нагрузки на процессор - тоже будет он. Считайте что это docker swarm на стероидах.

2. Если вам достаточно docker-compose и одного-двух серверов - ничего страшного в этом нет. Это не "зашквар" жить без кубера - он вообще специализированный инструмент, как и сами контейнеры.

3. Если вам хватает пары тройки серверов где вы можете запустить docker compose - вы в порядке (если можете нагрузку балансировать). Если уже не хватает - ну, пора запастись кофе и на пару недель впереться в мир Подов и Деплойментов

В любом случае, Kubernetes - это не серебряная пуля как некоторым кажется. Можно, конечно, и одно приложение туда перетащить, но надо ли вам тратить ресурсы на поддержку - решать вам.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
Кубер это оркестратор с достаточно широкими возможностями автоматизации.
Он не имеет смысла если у вас парочка компонентов, которые вы запускаете на одном хосте.

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

Во вторую очередь это огромное количество сущностей кубера, типа секреты, конфигмапы, которые позволяют оркестрировать енвайрнменты с десятками и сотнями подов, с возможностью автоматического масштабирования в декларативном виде.

В третью, большое количество интеграций с внешними системами при помощи раннеров, что позволяет сделать ci/cd, разграничить его по правам и так далее, объединиться с каким-нить hashicorp vault при помощи парочки аннотаций и так далее.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
1 нет задачи он решает другие
2 а если ты пишешь 100 проектов, или проект большой и на 100 серверов, а если людей сотни? В разрезе одного небольшого проекта кубер не нужен
3 2-3 сервера это такой домашний пет проект если что
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы