Како да примените апликације у Кубернетес-у

Кубернетес је једна од најпопуларнијих платформи за аутоматизацију за постављање, скалирање и рад са контејнерима апликација на кластеру хостова или чворова.

Овај чланак ће расправљати о једном од централних објеката у Кубернетесу: примени. Циљ је разумети његово понашање и како га креирати, ажурирати и избрисати.

Шта је распоређивање?

Деплоимент је један од објеката који се користе за покретање Подова. Кубернетес најбоље праксе подстичу употребу имплементација за апликације без држављанства. Без постављања, морали бисте ручно да креирате, ажурирате и избришете више Подова, што би било заморно и неизводљиво за многе Подове.

Примена декларише један објекат у ИАМЛ-у који не само да креира подове, већ и обезбеђује да су ажурирани и да раде. Такође можете лако аутоматски скалирати своје апликације користећи примену на Кубернетес-у. Дакле, имплементација се користи за скалирање, примену и враћање верзија ваших апликација у Подс.

Примена такође говори Кубернетесу колико копија Пода желимо да покренемо, а Кубернетес се брине за остало. Повезани контролер ће креирати РеплицаСет из ваше конфигурације када креира примену. Контролер повезан са РеплицаСет-ом ће креирати низ подова из РеплицаСет конфигурације.

Предности коришћења примене уместо директног креирања РеплицаСет-а су:

  • Историјатизација објекта: свака промена у објекту (преко „примени“ или „уређивања“) створиће резервну копију претходне верзије.
  • Управљање увођењем и враћањем: Можете се вратити на конфигурацију у вези са претходном тачком.

Креирање примене

Постоје две методе које можемо користити да креирамо Кубернетес примену:

  Како да користите алатку за сарадњу са документима Мицрософт Теамс

Императивна метода

Кубернетес АПИ-ји омогућавају директнији и императивнији приступ без потребе за конфигурационим датотекама или манифестима у формату ИАМЛ. У овом приступу, све што треба да урадимо је да кажемо шта желимо да се уради, а Кубернетес ће преузети одговорност да дефинише шта треба да се уради да би се постигао очекивани резултат.

Да бисте користили императивну методу, само користите наредбу испод:

kubectl create deployment nginx-deployment --image nginx --port=80

Декларативна метода

У овој методи морате све да декларирате, а када користите овај код, Кубернетес само чита ваше дефиниције и креира тачно онако како је представљено или декларирано.

Да бисте користили декларативно примену, мораћете да креирате ИАМЛ датотеку.

ИАМЛ датотека за примену са именом нев_деплоимент.иамл:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  #Specifies the number of Pod Copies
  replicas: 3
 #Selects the Pod to be managed by the deployment
  selector:
    #Matches the defined labels
    matchLabels:
      deploy: example
  template:
    metadata:
      #Specifies the labels on the Pod.
       labels:
         deploy: example
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.2 

У овој ИАМЛ датотеци, након дефинисања верзије Кубернетес АПИ-ја, типа објекта који креирате и назива имплементације, постоји одељак са спецификацијама. У овом одељку прво дефинишете кључ реплике, који означава број инстанци Пода које имплементација мора да остане активном.

Користите ознаку бирача да бисте идентификовали подове у примени. За ово можете користити ознаку за примену, која говори да су сви подови који одговарају овим ознакама груписани у примени.

Након тога, имате објекат шаблона где имате Под модел унутар ваше спецификације примене. Када имплементација креира подове, креира их користећи овај шаблон. Спецификација обичне махуне може се наћи под кључем шаблона.

  8 најбољих Реацт библиотека за креирање сјајних табела

Са овом имплементацијом, Нгинк слике са ознакама ће бити распоређене у Подс. Штавише, морате да будете пажљиви по овом питању, а Под је јединица за скалабилност у Кубернетесу, тако да морате да размислите о обрасцу који желите да користите ако ставите неколико контејнера у исти Под.

Затим примените Иамл датотеку нев_деплоимент.иамл, користите следећу команду:

kubectl apply -f new_deployment.yaml

Након неколико секунди, можете добити статус имплементације користећи следеће:

kubectl get all

Преузми и ажурирај примену

Имајте на уму да имате креиране подове, примену и такође скуп реплика. Дакле, имплементација увек креира и управља скупом реплика. Сада можете користити следећу команду да опишете примену:

kubectl describe deployment nginx-deployment 

Сада имате пун опис имплементације. Истиче стратегију која се користи за креирање/поновну изградњу подова када је ажурирање дефинисано као РоллингУпдате.

Стратегија РоллингУпдате омогућава уредну миграцију једне верзије апликације на новију верзију. То је подразумевана стратегија која се користи у Кубернетесу.

Поред овога, имамо и следеће стратегије:

  • Рецреате: Укида тренутно покренуте Под инстанце и ‘поново креира’ их са новом верзијом;
  • Плаво/зелено: Ова стратегија ствара два одвојена, али идентична окружења. У плавом окружењу, апликација ради као што јесте, док у зеленом окружењу апликација ради како ће бити у будућности;
  • Цанари: Стратегија примене где је подскуп корисника укључен у постепено издавање апликације или услуге.

Ако се одлучите за „ротирајуће ажурирање“, можете да конфигуришете његово понашање према броју жељених реплика.

  • макСурге вам омогућава да назначите (у процентима или апсолутним изразима) колико Подова може да креира поред броја реплика које су тренутно конфигурисане.
  • макУнаваилабле вам омогућава да назначите (у процентима или апсолутним изразима) колико Подова може бити „недоступно“ током ажурирања, у зависности од броја конфигурисаних реплика.
  Како сакрити свој 'активан' статус на Фацебоок Мессенгер-у

У зависности од ваше апликације и вашег аутоматског скалера, ове конфигурације ће вам омогућити да обезбедите КоС или убрзате своје примене.

Затим морате да скалирате Подове на 10 и промените Нгинк ознаку слике на најновију.

kubectl scale deployment nginx-deployment --replicas=10

Имајте на уму да имамо 5 контејнера у креирању, а од 10 подова, имамо 5 доступних.

Након неколико секунди, користите следећу команду:

kubectl get all

Овде можете видети да су сви подови креирани и да су контејнери покренути.

Брисање ваше имплементације

Да бисте избрисали Кубернетес примену, можете користити следеће команде:

kubectl delete deploy nginx-deployment 
kubectl delete deploy new_deployment.yaml

Кормило: Поједноставите примену

Када желите да примените сложену апликацију која користи десетине или чак стотине Кубернетес ресурса, кубецтл алат постаје неприкладан, због чега је развијен алат Хелм. Хелм је менаџер пакета за Кубернетес који се заснива на кубецтл-у и поједностављује примену апликација.

У речнику Хелм-а, апликација се назива издање. Повезан је са графиконом, тј. колекцијом конфигурационих датотека у ИАМЛ формату који садрже глобалне променљиве и шаблоне који описују Кубернетес ресурсе.

Закључак

Примена је суштински Кубернетес објекат. Како велика сила подразумева велику одговорност, морате бити пажљиви када је конфигуришете или ризикујете да имате неочекивано понашање. Да бисте ишли даље са конфигурацијама примене, можете погледати Кубернетес документацију.

Такође можете истражити неке од најбољих Кубернетес туторијала да учите од нуле и постанете стручњак.