Чим менше досвіду — тим більше Kubernetes

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Привіт! Це знову Мамкін Архітектор, і в мене для вас є тема, яка підняла цікаве обговорення в нашому каналі і може зацікавить вас також :) Але спочатку невеликий дисклеймер. Заголовок клікбейтний — дуже поважаю як сам Кубернетес, так і експертів у ньому. Ну а тепер — погнали!

Якийсь дядько в твітері заявив що docker compose в проді це антипатерн. «Воно було придумано для розробки, кококо». А я, наприклад, запускаю на ньому всі свої продакшн сервіси (привіт, bankoscan.com, який працює в мене в коридорі на домашньому серваку). Хтось тут неправий — і це не я.

Зазвичай аргументи наводяться наступні: не вміє в масштабування, немає оркестрації, і взагалі це для дитячих поробок. Якщо ви себе поважаєте — треба кубернетес. Навіть коли воно з однієї ноди, потім завжди можна докинути. Бо так роблять люди в піджаках, і про це питають на співбесідах.

Проте правда в тому, що більшість проектів не потребують цього усього. Ви запросто можете почати з однієї VPS, і compose там — найкращий вибір.

Чому? Бо це максимально просто. Є можливість швидко докинути базу і якусь обвʼязку. Все зберігається в одному репозиторію (привіт, gitops). Одне і те саме запускається локально для розробки і віддалено. Підняти можна будь-як — rsync, ansible чи Portainer.

Одна з проблем — кастомні імеджи докера, тобто сама ваша апка. Їх треба кудись публікувати, або в безкоштовні і публічні реєстри, або заморочуватись з приватними. Але docker compose вирішує і цю проблему. Є така штука, як build, яка білдить імедж прямо на хості з сорсів. Реєстр не потрібен взагалі. Затягнув репо — і поїхали. Якщо чесно, то цей пост я почав писати саме через build і вирішення проблеми з публікацією своїх імеджів. А вийшло ось таке, і це може навіть краще :)

Мій прод піднімається з нуля за 10 хвилин на будь-якому VPS за $5. Спробуйте повторити це на кубері.

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

У чомусь згоден — у чомусь ні. :) Дійстно є проекти де можна працювати з docker compose досить успішно але викорстання build опції на мій погляд можливо тільки для локальної розробки. Бо коли у вас на тих самих ресурсах йде і зборка і працює сама аплікація — то не є нормальна практика використання ресурсів.

Проте правда в тому, що більшість проектів не потребують цього усього. Ви запросто можете почати з однієї VPS, і compose там — найкращий вибір.

Кубернетес теж підняти це 10 хв, мануально, але навіть це не потрібно, на якомусь DigitalOcean ща 5хв підніметься менеджет кубернетес без питань, докер режістрі як правило для не великих задач безкоштовнийа якщо трошки більше то 5 долларів

Я далеко не експерт в кубернетес і compose. У мене є пет проєкт, ігрові сервери в k3s кластері на CX33 hetzner інстансі за $5. І для однопотокової гри, їй не потрібне ні масштабування, ні оркестрації, я однаково обрав k3s. по одній простій причині — я можу все авторматизувати через terraform/opentofu.
Якщо треба додати ще 1 сервер зі своїми конфігами (наприклад, для тестування), треба дописати 1 виклик tofu модуля в 10 рядків, конфіги створюються через templatefile і прокидуються як configmap. займає це 1 хвилину разом з викликом tofu apply. Чи можна зробити це так зручно з compose?

Мій прод піднімається з нуля за 10 хвилин на будь-якому VPS за $5. Спробуйте повторити це на кубері.

В 2 виклики tofu apply створюється інстанс разом з k3s single node кластером і 6 ігрових серверів за 10 хвилин.

Чому? Бо це максимально просто. Є можливість швидко докинути базу і якусь обвʼязку. Все зберігається в одному репозиторію (привіт, gitops). Одне і те саме запускається локально для розробки і віддалено.

в чому проблема це все робити у кубернетесі?

Проте правда в тому, що більшість проектів не потребують цього усього.

більшість проєктів і без compose працюватимуть.

Стаття з розряду «якщо це мені не потрібно для мого пет-проекту на 5 юзерів, то це не нада, дивіться я не такий як всі»

Підтримую для кожного проєкту своє рішення. FleetBMS.com як лендінг на vervet. А продукт також на docker compose, бо просто вистачає поки що моніторити всі пристрої, далі можна скейлити manual. Ну а потім, потім буде видно...
Тому під кожну задачу своє рішення.

літаки й потяги теж у 90% випадків не потрібні, можна й на волах

Можливо кубер то оверінжинірінг, можливо
з іншого боку складність сетапу й підтримки чогось типу k0s цілком порівняна з складністю сетапа компоуза

Був період коли те саме заливали про nomad, тіпа простіше ітд

Але для кубера настільки розвинута екосистема, що зробити те саме на компоуз чи номад — просто витрачати час на винайдення кастомних велосипедів.

Якщо порівнювати еко, «складність» і «простота» виходять по іншому.

Kubernetes потрібен там, де треба жонглювати сотнями-тисячами контейнерів.
Нещодавно був тред, де дописувач ділився своїми гірким досвідом з docker swarm
dou.ua/forums/topic/57418

не тільки про тисячі контейнерів

всі красоти типу сертифікатів, інтеграції з всякими iam, моніторинг і купа іншого типу лайна з коробки — відлизуються під кубер армією контрибюторів

якщо грубу аналогію — то це як їхати по асфальтованій дорозі vs їхати по бездоріжжю через дрімучі хащі

Просто для маленької інфраструктури є певний відчутний еффорт налаштувати кубер — здається заради нещасного контейнера треба запустити купу іншого супутнього лайна. Але цю купу лайна (сертифікати, лоадбалансери, моніторинг ітд) треба робити в будьякому разі. Від того що воно «не на кубері» воно зовсім не стає простішим, навіть навпаки

Docker compose розроблявся як прямий кокурент K8s та не витримав. Та дійсно Minikube, LocalStack і т.п. доволі рідка штука для локальної розробки з купи причин. Зокрема повальній моді розробляти на ноутбуках, які банально таке навантаження не тягнуть, треба потужний десктоп.
Щодо Docker Compose — так його елементрано нема в : AWS, GCP, Azure, Oracle Claud і т.д. — а Kubernetes Engine — є. По факту мало хто розробляє під чистий K8s, зазвичай розробляють під конкретний клауд і його Kubernetes Engine.

Завжди думав, що зазвичай розробляють під якусь бізнес-задачу. )
Підбирають тех стек. )
І вже потім вибирають, де саме це запускати, якщо цього ще не було визначено в ТЗ. )

І якщо апка контейнеризується, то вже неважливо, яка реалізація куба її запускає, вона має запуститись на будь-якій.
І якщо в процесі експлуатації якийсь з клаудів за якихось причин не підходить, переїжджаємо на інший.

Працює не так, працює як вдалось продати — у кого кращій маркетинг. У Google він кращій за Docker Inc. — більше фінансових можливостей. Сьогодні в хай теч червоний океан конкуренції, зазвичай вивід продута на ринок це 1 до 20 коли промоушен і маркетинг коштує дорожче чим зусилля на безпосередньо розробку.

Не пишіть дурниці. Компоуз і к8с ніколи не були конкурентами і писалися під різні задачі. Конкурентом к8с від Докера є Swarm, а компоуз тут і не пробігав навіть. І от якщо порівнювати к8с і сворм, то стає очевидним чому переміг к8с

Власне swarm це той самий compose із додаванням фітч горизонтального масштабування (оркестрації) щоби можна було використовувати більше одної залізяки і з’явився в 2016 через два роки від compose 2014, в догонку K8s 2015 року.
Нова назва явно маркетинговий ребрендінг, щоби продавати як новий продукт. А так навіть файли ті самі.
K8s спочатку теж пускав docker, задля контейнерізації доки не змінили на crun.
А взагалі то оркестраторів не мало, OpenShift, Nomad чи Apache Mesos. З них реально тільки OpenSift більш не менш розповсюджений, для приватних клаудів у власних стойках серверів на власному залізі. Доволі складно використовувати те, чого не підтримує ваш клауд провайдер.

Підписатись на коментарі