Kubernetes срещу Docker: Разберете контейнери и оркестрация

Ако сте били в крак с най-новите тенденции в разработването на софтуер, има два термина, които несъмнено сте срещали отново и отново: Docker и Kubernetes, които по същество са стенография за  контейнери  и  оркестрация .

Контейнерите на Docker помогнаха за рационализирането на процеса на преместване на приложения чрез разработване и тестване и в производството, докато Docker и Kubernetes помогнаха да се преоткрие начинът, по който приложенията се изграждат и разгръщат - като колекции от микроуслуги вместо монолитни стекове.

Защо Docker и Kubernetes са важни, как променят разработката на софтуер и каква роля играе всеки в процеса? Ще се опитам да отговоря на тези въпроси по-долу.

Докер и контейнери

Контейнерите - поддържани в Linux, Windows и други съвременни операционни системи - позволяват на софтуера да работи в самостоятелни мини среди, които са изолирани от останалата част от системата. Контейнерите са оприличавани на виртуални машини, но те не са виртуални машини - те са много по-леки, по-бързи за стартиране и спиране и много по-гъвкави и преносими. Тъй като контейнерите могат да се въртят нагоре или надолу или да се мащабират или изваждат за секунди, те улесняват стартирането на приложения в еластична среда като облака. 

Linux и други операционни системи поддържат контейнерирани приложения в продължение на много години, но работата с контейнери не беше точно удобна за потребителя. Docker, както в своите отворени кодове, така и в търговските превъплъщения, е софтуер, който прави контейнерите удобна за потребителя и удобна за разработчици стока. Docker предоставя общ набор от инструменти и метафори за контейнери, така че да можете да пакетирате приложения в изображения на контейнери, които могат лесно да бъдат внедрени и използвани повторно във вашата собствена организация или другаде.

Накратко, Docker прави бързо създаването на изображения на контейнери, версирането им, споделянето им, преместването им и разполагането им в съвместими с Docker хостове като работещи контейнери.

Кога използвам Docker и контейнери?

Докерът и контейнерите са най-подходящи за работа с натоварвания, които трябва да имат едно или повече от следните качества:

  • Еластична мащабируемост.  Не знаете колко екземпляра на приложение ще трябва да стартирате, за да задоволите търсенето. Контейнеризираното приложение или услуга може да бъде мащабирано, за да отговори на търсенето, като разположи по-малко или повече екземпляра на своите контейнери.
  • Изолация.  Не искате приложението да пречи на други приложения. Може би ще изпълнявате множество версии на приложението една до друга, за да задоволите различни ревизии на API. Или може би искате да поддържате основната система чиста (винаги добра идея).
  • Преносимост.  Трябва да стартирате това приложение в различни среди и изисквате всяка настройка да бъде възпроизводима. Контейнерите ви позволяват да опаковате цялата среда на изпълнение на вашето приложение, което прави приложението лесно за разполагане навсякъде, където намерите домакин, съвместим с Docker - работен плот за разработчици, QA тестова машина, локална ютия или отдалечен облак.

Научете повече за Docker и контейнери

  • Какво е Docker? Искрата за революцията на контейнерите
  • Защо трябва да използвате Docker и контейнери
  • Започнете с Docker
  • Скритите предимства на Docker за QA
  • 12 инструмента с отворен код, които правят Docker по-добър
  • Още новини от Docker, анализ, инструкции, отзиви и съвети

Кубернети и оркестрация на контейнери

Контейнерите са проектирани главно да изолират процесите или приложенията един от друг и основната система. Създаването и разполагането на отделни контейнери е лесно. Но какво, ако искате да съберете множество контейнери - да речем, база данни, уеб интерфейс, изчислителен бек-енд - в голямо приложение, което може да се управлява като единица, без да се притеснявате за разполагане, свързване, управление, и мащабиране на всеки от тези контейнери поотделно? Трябва ви начин да  организирате  всички части във функционално цяло.

Това е работата, която поема Kubernetes. Ако контейнери са пътници на круиз, Kubernetes е директор на круиза.

Kubernetes, базиран на проекти, създадени в Google, предоставя начин за автоматизиране на внедряването и управлението на многоконтейнерни приложения на множество хостове, без да се налага да управлявате всеки контейнер директно. Разработчикът описва оформлението на приложението в множество контейнери, включително подробности като как всеки контейнер използва мрежи и съхранение. Kubernetes се справя с останалото по време на изпълнение. Той също така се справя с управлението на неподходящи подробности като тайни и конфигурации на приложения.

Kubernetes изисква известен опит, за да се използва добре, въпреки че е далеч по-скоро решение до ключ, отколкото преди. Част от напредъка в лекотата на използване се дължи на лесно достъпни рецепти за често срещани приложения (Helm диаграми); някои се дължат на богатството от дистрибуции на Kubernetes, произведени от фирми с имена (Red Hat, Canonical, Docker), които работят ръка за ръка с популярни стекове за приложения и рамки за разработка.

Кога използвам Kubernetes и оркестрация на контейнери?

Обикновените контейнеризирани приложения, които обслужват малък брой потребители, обикновено не изискват оркестрация, да не говорим за Kubernetes. Но ако дадено приложение има повече от тривиално ниво на функционалност или тривиален брой потребители, става трудно да не се изобрети отново колелото, осигурено от системите за оркестрация. Ето някои основни правила за определяне кога оркестрацията трябва да влезе в картината.

  • Вашите приложения са сложни.  Всяко приложение, което включва повече от два контейнера, вероятно отговаря на сметката. Въпреки това, скромните приложения, които обслужват само малък брой потребители, могат да бъдат организирани чрез по-минимално решение като режим на роене на Docker, а не Kubernetes.
  • Вашите приложения имат високи изисквания за мащабиране и устойчивост.  Kubernetes и други оркестранти ви позволяват да балансирате товари и да въртите контейнери, за да отговорите на търсенето декларативно, като описвате желаното състояние на системата, вместо да кодирате реакции на променящите се условия на ръка.
  • Искате да се възползвате максимално от съвременните CI / CD техники.  Системите за оркестрация поддържат модели за внедряване за приложения, използващи синьо / зелено внедряване или подвижни надстройки.

Може да дойде ден, когато Docker и Kubernetes да бъдат затъмнени от още по-приятелски абстракции и да отстъпят място на по-елегантни начини за създаване и управление на контейнери. Засега обаче Docker и Kubernetes са от решаващо значение за познаване и разбиране.

Научете повече за Kubernetes и оркестрацията

  • Какво представлява Kubernetes? Следващата ви платформа за кандидатстване
  • 4 причини да използвате Kubernetes
  • 10 Kubernetes дистрибуции, водещи революцията на контейнерите
  • Управляван Kubernetes: AWS срещу Azure срещу Google Cloud
  • Здравейте MicroK8s: По-прост Kubernetes
  • Какво ново в Kubernetes
  • Още новини на Kubernetes, инструкции, рецензии, съвети и анализи