Kubernetes

„Kubernetes ReplicaSet“ pamoka

„Kubernetes ReplicaSet“ pamoka
„Kubernetes“ dažnai vertinamas kaip šis didžiulis tarpusavyje susijusių sąvokų, tokių kaip mazgai ir tinklai, paslaugos, diegimas ir kt. Šiame įraše pamažu atskleiskime pagrindinę abstrakciją, kuri yra „ReplicaSet“. Pradėsime nuo mažo sukūrimo .yaml failas „Kubernetes“ ankštei, kuriame būtų etiketė, ir tada sukurkite „ReplicaSet“ rinkinį, kuris užtikrintų, kad klasteryje visada veikia tam tikras skaičius tos pačios etiketės ankščių . Tai iš tikrųjų buvo numatyti projekto autoriai, kurdami „Kubernetes“. Taigi pradėkime.

Būtinos sąlygos

Pirmiausia jums reikės prieigos prie „Kubernetes“ sankaupos. Galite sukurti vieną naudodami „Minikube“ arba naudoti „Docker“, skirtą „Windows“, arba „Docker“, skirtą „Mac“, kurie abu turi vieną mazgą „Kubernetes“, kurį galite įgalinti „Docker“ nustatymuose.

Jūs taip pat turėtumėte iš anksto žinoti apie „Kubernetes“. Čia yra tikrai geras atspirties taškas.

Podų kūrimas

Paprastai mes sukuriame ankštis naudodami „yaml“ failą, kuriame nurodoma, kokį konteinerio vaizdą naudoti, kokius uostus atidengti ir kt. Čia yra paprastas failas, skirtas sukurti „nginx“ pod.

apiVersion: v1
natūra: Pod
metaduomenys:
pavadinimas: nginx-1
etiketė:
programa: žiniatinklio serveris
specifikacija:
konteineriai:
- vardas: nginx
vaizdas: nginx: 1.7.9
uostai:
- containerPort: 80

Išsaugokite jį pavadinimu nginx-pod.yaml kataloge, tada iš to paties katalogo vykdykite komandą:

$ kubectl sukurti -f ./ nginx-pod.yaml
## Patikrinkite, ar pod yra sukurtas vykdant:
$ kubectl gauna ankštis

Jūs pastebėsite, kad vienas ankštis pavadintas „Nginx-1“ veikia ir veikia. Bet jūs negalite masto šio vieno pod. Bėgimas kubectl sukurti vėl suteiks klaidą nuo pavadinimo nginx-1 nebegalima pakartotinai naudoti.

„Kubernetes“ suteikė galimybę kurti ankštis aukštesnėms abstrakcijoms, tokioms kaip Dislokacijos ir „ReplicaSets“. Kurie sukuria ankštis iš tam tikro pod šablono, nurodydami, kokius vaizdus naudoti, kokius prievadus atidaryti kiekvienoje naujoje ankštyje ir pan., Bet nieko per konkretaus apie vieną ankštį. Tada „ReplicaSet“ (ir „Deployments“) kuria naujas ankštis, kiekvienam naujam podui suteikdamas unikalų pavadinimą ir ne unikalų etiketę, kuri padeda „ReplicaSet“ sekti iš tam tikro šablono sukurtas ankštis.

„ReplicaSet“ užtikrina, kad bet kuriuo momentu tam tikras skaičius tam tikros etiketės ankščių visada būtų ir veikia. Pavyzdžiui, jei mazgas žlunga, „ReplicaSet“ užduotis yra sukurti daugiau ankščių kituose mazguose, kad būtų kompensuoti nuostoliai. Norėdami parašyti „replicaset yaml“ failą, laikysimės šablono, panašaus į „pod“ rašymą. Tai turės api versiją (programos / v1), tipas („ReplicaSet“) ir pavadinimas metaduomenyse. Pats „replicaset“ gali turėti etiketes, tačiau kol kas viską palengvinsime ir tiesiog suteiksime jam unikalų pavadinimą mano kopija.

Tada mums reikia pereiti nuo metaduomenys skyriuje prie materijos mėsos spec. Šiame skyriuje pateikiame norimų pakartojimų skaičių kopijos. Tada mes suteikiame šiam „ReplicaSet“ a selektorius kuris būtų naudojamas etiketei derinti, tarkim, programa į vertę, tarkim, Tinklapio serveris, tarp šiuo metu dirbančių ankščių. Jei šių ankščių yra mažiau, tada pagal pateiktą šabloną bus sukurtos ankštys ir ta pati etiketė bus pridėta prie šių naujų ankščių. Jei ankščių yra daugiau nei reikalaujama, ji ištrina keletą.

Dažniausiai reikia nurodyti šabloną, kuris būtų pagrindas kuriant naujas ankštis. Šis šablonas neturės pavadinimo, nes „replicaset“ sukurs naują pavadinimą kiekvienai naujai sukurtai dėžutei. Tačiau turės etiketes ir galite pastebėti, kad ta pati etiketė app = žiniatinklio serveris kad šablonas yra pasirinktas per selektorius parametras repliketo specifikacijoje.

apiVersion: apps / v1
natūra: „ReplicaSet“
metaduomenys:
vardas: my-replicaset
 
specifikacija:
kopijos: 3
selektorius:
matchLabels:
programa: žiniatinklio serveris
šablonas:
metaduomenys:
etiketės:
programa: žiniatinklio serveris
specifikacija:
konteineriai:
- vardas: nginx
vaizdas: nginx: 1.7.9
uostai:
- containerPort: 80

Išsaugokite šį failą kaip „nginx-replicaset“.yaml ir sukurkite kopiją naudodami komandą:

$ kubectl sukurti -f nginx-replicaset.yaml

Nes anksčiau mes sukūrėme ankštį su ta pačia etikete app = žiniatinklio serveris, kopija tik sukurtų dar dvi ankštis. Naudodami komandą galite išvardyti visas ankštis:

$ kubectl gauna ankštis
PAVADINIMAS PARUOŠTAS BŪKLĖ PAGAL PALEIDIMĄ AMŽIUS
my-replicaset-nmvt9 1/1 Veikia 0 9s
„my-replicaset-xf9mx 1/1“ veikia 0 9s
nginx-1 1/1 bėgimas 0 28s

Kiekviena ankštis turės unikalų pavadinimą. Kaip ir pati pirmoji mūsų sukurta ankštis turėjo pavadinimą nginx-1. Galite pabandyti ištrinti šį naudodami komandą:

$ kubectl ištrinti pod nginx-1
$ kubectl gauna ankštis
 
PAVADINIMAS PARUOŠTAS BŪKLĖ PAGAL PALEIDIMĄ AMŽIUS
my-replicaset-nmvt9 1/1 Veikia 0 1m
my-replicaset-pkn4q 1/1 Veikia 0 22s
„my-replicaset-xf9mx 1/1“ veikia 0 1 m

Jūs pastebėsite, kad valdiklis „ReplicaSet“ beveik akimirksniu sukūrė naują podą, kuris pakeis tą, kurį ištrynėme. Taip užtikrinant, kad veikiančių ankščių skaičius su etikete app = žiniatinklio serveris visada yra 3, kaip nurodyta aukščiau esančiame mūsų kopijų apraše.

Jūs gausite daug kontrolės dėka etikečių ir selektorių. Galite toliau platinti ankštis keliuose mazguose naudodami „nodeSelectors“, kurie naudojami tam tikram mazgų skaičiui paskirstyti tam tikruose mazguose.

Tai, ko neleidžia kopijos, yra atnaujinimai. Jei naujesnė programos versija, tarkime, „nginx“: 1.8 pasirodys, turėsite ištrinti šį replikatą ir sukurti naują su tokiu atvaizdu, kuris minimas repliketo yaml apraše. Čia praverčia dislokavimo koncepcija. Tai apima kopijų rinkinių idėją ir tęsiasi teikiant papildomą palaikymą atnaujinant jūsų programas. Dabar, kai jums patinka kopijos, gali būti naudinga pasidomėti „Kubernetes“ diegimais.

Literatūra

  1. Podų kūrimas
  2. Kuriami „ReplicaSets“ rinkiniai
Kaip įdiegti „League of Legends“ „Ubuntu 14“.04
Jei esate „League of Legends“ gerbėjas, tai jums yra galimybė išbandyti „League of Legends“. Atminkite, kad LOL palaikoma „PlayOnLinux“, jei esate „Li...
Įdiekite naujausią „OpenRA“ strategijos žaidimą „Ubuntu Linux“
„OpenRA“ yra „Free / Free Real Time Strategy“ žaidimų variklis, atkuriantis ankstyvuosius „Westwood“ žaidimus, tokius kaip klasikinis „Command & Conqu...
Įdiekite naujausią „Dolecin Emulator“, skirtą „Gamecube“ ir „Wii“, sistemoje „Linux“
„Delfinų emuliatorius“ leidžia žaisti pasirinktus „Gamecube“ ir „Wii“ žaidimus „Linux“ asmeniniuose kompiuteriuose (PC). „Dolphin Emulator“ yra laisv...