Кубернети

Какво е Kubernetes?

Какво е Kubernetes?

Какво е Kubernetes? И каква е неговата архитектура?

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

Приложенията сега са в комплект със зависимостите, от които се нуждаят, в лек контейнер вместо VM. Това е страхотно! Въпреки това, той не осигурява имунитет срещу системни откази, отказ на мрежата или откази на диска. Например, ако центърът за данни, където работят сървърите ви, е в поддръжка, приложението ви ще излезе офлайн.

Kubernetes идва в картина, за да реши тези проблеми. Отнема идеята за контейнери и я разширява за работа в множество изчислителни възли (които могат да бъдат хоствани в облак виртуална машина или голи метални сървъри). Идеята е да има разпределена система, в която да се изпълняват контейнерни приложения.

Защо Kubernetes?

Сега, защо първо трябва да имате разпределена среда?

По множество причини на първо място е високата наличност. Искате уебсайтът ви за електронна търговия да остане онлайн 24/7, или ще загубите бизнес, използвайте Kubernetes за това. Второто е мащабируемост, където искате да мащабирате 'out'. Мащабирането тук включва добавяне на повече изчислителни възли, за да се даде на вашето нарастващо приложение повече място за крака за работа.

Дизайн и архитектура

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

Сега, разбира се, самият главен възел може да се провали и да вземе целия клъстер със себе си, така че Kubernetes всъщност ви позволява да имате множество главни възли заради излишъка.

Птичи поглед от типично разгръщане на Kubernetes

Учителят на Кубернети

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

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

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

The API сървър излага API на Kubernetes, който използва JSON полезни товари през HTTPS, за да комуникира с потребителския интерфейс, с който екипите на разработчиците или персонала на DevOps в крайна сметка ще взаимодействат. Както уеб потребителският интерфейс, така и CLI консумират този API за взаимодействие с клъстера Kubernetes.

API сървърът е отговорен и за комуникацията между работните възли и различни компоненти на главния възел като etcd.

Главният възел никога не е изложен на крайния потребител, тъй като би застрашил сигурността на целия клъстер.

Възли на Kubernetes

Машина (физическа или виртуална) ще се нуждае от няколко важни компонента, които след като бъдат инсталирани и настроени правилно, след това могат да превърнат този сървър в член на вашия клъстер Kubernetes.

Първото нещо, от което ще се нуждаете, е изпълнение на контейнер, като Docker, инсталирано и работещо на него. Очевидно той ще отговаря за въртенето и управлението на контейнерите.

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

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

Защо да измислят шушулки?

Docker има политика да изпълнява по едно приложение на контейнер. Често се описва като „Един процес на контейнер“ политика. Това означава, че ако имате нужда от сайт на WordPress, насърчаваме ви да имате два контейнера, един за базата данни, на който да работи и друг за уеб сървъра, на който да работи. Обединяването на подобни свързани компоненти на приложение в подсигурност гарантира, че когато се мащабирате, двата взаимозависими контейнера винаги съжителстват на един и същ възел и по този начин разговарят бързо и лесно.

Шушулките са основната единица за разполагане в Kubernetes. Когато се мащабирате, добавяте още шушулки към клъстера. На всеки блок се дава собствен уникален IP адрес във вътрешната мрежа на клъстера.

Обратно към възела Kubernetes

Сега възел може да изпълнява множество под и може да има много такива възли. Всичко това е наред, докато не помислите да се опитате да общувате с външния свят. Ако имате проста уеб-базирана услуга, как бихте насочили името на вашия домейн към тази колекция от модули с много IP адреси?

Не можете и не трябва! Kube-прокси е последното парче от пъзела, което позволява на операторите да изложат определени шушулки в Интернет. Например вашият преден край може да бъде публично достъпен и kube-proxy ще разпредели трафика между всички различни подси, които са отговорни за хостването на предния край. Вашата база данни обаче не трябва да се прави публична и kube-proxy би позволил само вътрешна комуникация за такива натоварвания, свързани с back-end.

Имате ли нужда от всичко това?

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

Ако обаче ще работите с голям екип и ще внедрите приложенията си за сериозна търговска употреба, Kubernetes си струва да добавите допълнителни разходи. Можете да спрете нещата да станат хаотични. Направете място за поддръжка, без престой. Настройте отлични A / B условия за тестване и мащабирайте постепенно, без да харчите твърде много за инфраструктурата предварително.

Как да използвам Xdotool за стимулиране на кликвания и натискания на мишката в Linux
Xdotool е безплатен инструмент с команден ред с отворен код за симулиране на щраквания и натискания на мишката. Тази статия ще обхване кратко ръководс...
Топ 5 продукти за ергономична компютърна мишка за Linux
Продължителната употреба на компютър причинява ли болка в китката или пръстите? Страдате ли от схванати стави и постоянно ли ви се налага да си ръкува...
Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...