Кубернети

Внедряване на приложения в клъстерите Kubernetes

Внедряване на приложения в клъстерите Kubernetes

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

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


Традиционно внедряване на приложения

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

С Kubernetes подходът се промени. Внедряването може да се извърши с оглед на текущите нужди и по-късно може да бъде мащабно с развитието на вашия бизнес. Контейнеризацията ви позволява да отделите основните компоненти на вашите уеб услуги, дори когато те се изпълняват на един възел. По-късно, когато се мащабирате хоризонтално (което означава, че добавяте повече сървъри към вашата среда), просто трябва да завъртите повече контейнери и Kubernetes ще го планира на подходящи възли за вас.  Обратен прокси? Услугите на Kubernetes ще влязат, за да решат този проблем.


Подс

Като първа стъпка, нека завъртим шушулка. За целта ще ни е необходим YAML файл, дефиниращ различни атрибути на шушулката.

apiVersion: v1
вид: Под
метаданни:
име: nginx
спецификация:
контейнери:
- име: nginx
изображение: nginx: 1.7.9
портове:
- containerPort: 80

Добавете съдържанието по-горе в a шушулка.ямъл файл и го запазете. Разглеждайки текста по-горе, можете да видите, че мил на ресурс, който създаваме е шушулка. Ние го кръстихме nginx, и изображението е nginx: 1.7.9 което по подразбиране означава, че Kubernetes ще извлече подходящото изображение nginx от публично достъпните изображения на Docker hub.

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

Сега, за да започнете изпълнението на шушулката:

$ kubectl създай -f шушулка.ямъл

Не можете да получите достъп до шушулката извън клъстера. Той все още не е изложен и съществува само като единична шушулка. За да сте сигурни, че той наистина е разположен, изпълнете:

$ kubectl вземете шушулки

За да се отървете от шушулката с име nginx, изпълнете командата:

$ kubectl изтриване на под nginx

Внедряване

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

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

По-долу е много често срещан начин за дефиниране на разполагане:

apiVersion: apps / v1beta1
вид: Разгръщане
метаданни:
име: nginx-разполагане
спецификация:
реплики: 2
шаблон:
метаданни:
етикети:
приложение: nginx
спецификация:
контейнери:
- име: nginx
изображение: nginx: 1.7.9
портове:
- containerPort: 80

Ще забележите, наред с други неща, двойка ключ-стойност, която е:

етикети:
приложение:
nginx

Етикетите са важни за управлението на клъстери, тъй като помагат за проследяването на голям брой шушулки, всички с еднакви задължения. Подсът се създават по командата на главния възел и те комуникират с главния възел. Все пак се нуждаем от ефективен начин те да говорят помежду си и да работят заедно в екип.


Услуги

Всяка шушулка има свой собствен вътрешен IP адрес и комуникационен слой като Flannel помага на шушулките да комуникират помежду си. Този IP адрес обаче се променя доста и в крайна сметка целият смисъл от наличието на много шушулки е да ги оставите да бъдат еднократни. Шушулките често се избиват и възкресяват.

Въпросът, който сега възниква, е следният - Как ще говорят предните шушулки с фоновите шушулки, когато нещата са толкова динамични в клъстера?

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

Например, ако имаме услуга на база данни с 10 подсистеми на база данни, някои от подсистемите на базата данни могат да се появят или да бъдат убити, но услугата ще гарантира, че останалата част от клъстера получава „услугата“, която е база. Услугите могат да се използват и за излагане на предния край на останалата част от Интернет.

Ето типично определение за услуга.

apiVersion: v1
вид: Услуга
метаданни:
име: wordpress-mysql
етикети:
приложение: wordpress
спецификация:
портове:
- пристанище: 3306
селектор:
приложение: wordpress
ниво: mysql
клъстерIP: Няма

Подсвете, обозначени като WordPress с определеното ниво на mysql, са тези, които ще бъдат взети от тази услуга и изложени на подсървърите на уеб сървъра за типичен WordPress, настроен на Kubernetes.


Слово за предпазливост

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

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

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

Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...
Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...