Kubernetes

„Kubernetes“ ir „Cron“ darbai

„Kubernetes“ ir „Cron“ darbai
Dauguma programų, veikiančių paskirstytoje sistemoje, pvz., „Kubernetes“, visada veikia kaip žiniatinklio serveriai ar duomenų bazės ar API serveriai. Tačiau yra atskira objektų klasė, skirta paleisti vieną kartą arba tik kas kartą pabusti ir paleisti savo kelią. Periodiniai darbai, pvz., TLS sertifikatų atnaujinimas su tokiais agentais kaip „Certbot“, yra klasikinis tokių darbų, vykdomų tradiciniuose serveriuose, pavyzdys. Tai atliekama naudojant „Cron“ įrankį „Unix“ sistemose.

„Kubernetes“ turi analogišką vieno laiko procesų vykdymo būdą Darbas ir periodiniai procesai, pvz cron darbai.

Pradėsime nuo įprasto pavyzdžio, kas yra „Jobs“, ir parodysime standartinį oficialių dokumentų pavyzdį. Iš šio pavyzdžio bus lengva suprasti, ką tai reiškia sėkmingai valdant darbą Kubernetes kontekste.

Jei norite sekti toliau, rekomenduočiau naudoti „Kataconda Playground for Kubernetes“, kuris suteiks „Kubernetes“ klasterį be dėžutės, jums nereikės jo rankiniu būdu sukonfigūruoti arba rizikuoti eksperimentinės gamybos klasteriu.

„Kubernetes“ darbai

Darbai yra aukštesnio lygio „Kubernetes“ abstrakcijos, panašios į „ReplicaSets“ ir „Deployments“. Tačiau skirtingai nei paskirstymai, kuriuos valdo diegimas, ir „ReplicaSets“, darbą atliekantys ankštys užbaigia savo darbą ir išeina.

Kai baigsis nurodytas ankščių skaičius, sakoma, kad darbas sėkmingai baigtas. Kokius kriterijus apibūdina sėkmingas „pod“ nutraukimas, apibrėžsime Jobo YAML faile. Tada darbo kontrolierius užtikrins, kad tam tikras skaičius ankščių buvo sėkmingai nutrauktas ir sakoma, kad darbas yra baigtas.

Sukurkime darbą, kurio žurnaluose atspausdinsime pi skaičius iki 2000 vietų, kuriuos išnagrinėsime. Sukurkite failą ir paskambinkite Mano darbas.yaml ir išsaugokite jame šį turinį;

apiVersion: partija / v1
natūra: Darbas
metaduomenys:
vardas: pi
specifikacija:
šablonas:
specifikacija:
konteineriai:
- vardas: pi
vaizdas: perl
komanda: ["perl", "-Mbignum = bpi", "-wle", "print bpi (2000)"]
paleisti iš naujoPolitika: niekada
Apribojimas: 4

Sukurkite darbą naudodami šį failą:

$ kubectl sukurti -f ./ darbas.yaml

Pastebėsite, kad darbas bus atliktas nuo kelių sekundžių iki poros minučių. Kai bandote išvardyti visas ankštis naudodami:

$ kubectl gauna ankštis
PAVADINIMAS PARUOŠTAS BŪKLĖ PAGAL PALEIDIMĄ AMŽIAUS
pi-wg6zp 0/1 Baigta 050s

Pamatysite, kad su pi susijusios pod būsena yra Baigta neveikia ar nutraukiama.Taip pat galite nukopijuoti ankšties pavadinimą, kad galėtume patikrinti, ar pi iš tikrųjų buvo apskaičiuota iki 2000 skaitmenų. Konkretus ankšties pavadinimas jūsų atveju gali skirtis.

$ kubectl rąstai pi-wg6zp

Įdomu tai, kad ankštyje nėra Nutraukta jis vis dar yra labai aktyvus, tiesiog jame nėra jokių programų. Panašu į tiesiog įjungiant kompiuterį ir jo nenaudojant. Jei ankštis būtų nutraukta, visų pirma nebūtume galėję iš jos ištraukti rąstų.

Norėdami išvalyti darbą ir visas sukurtas dėžutes, vykdykite komandą:

$ kubectl ištrinti -f mano-darbus.yaml

Oficialiuose dokumentuose galite sužinoti daugiau apie darbo specifikacijas ir kaip parašyti specifikaciją.

Krono darbai

„Cron“ darbai yra panašūs į „Unix“ įrankį „Cron“, kuris periodiškai veikia pagal mūsų norimą tvarkaraštį. Šiuo metu tai nėra nuostabus dalykas „Kubernetes“, todėl turėtumėte būti atsargūs. Cituojant oficialius dokumentus:

„Cron darbas sukuria darbo objektą apie kartą per savo tvarkaraščio vykdymo laiką. Mes sakome „apie“, nes tam tikromis aplinkybėmis gali būti sukurtos dvi darbo vietos arba jos nebus sukurtos. Mes stengiamės, kad tai būtų retai, tačiau visiškai neužkirstame tam kelio. Todėl darbo turėtų būti idempotentas

Terminas „idempotent“ reiškia, kad „Cron Job“, atliktas vieną ar du kartus ar bet kiek kartų, turėtų tą patį poveikį sistemai. Tikrinti, ar nėra naujinių, stebėti tokias operacijas, galima laikyti idempotentinėmis. Tačiau duomenų keitimas ar rašymas į duomenų bazę nėra tarp jų.

Parašykime „cron“ darbą, kuris parašytų „Sveikas, pasauli!“Pranešimą savo žurnaluose kartu su laiko žyma, kada tas pranešimas buvo parašytas. Sukurkite failą, vadinamą „my-cronjob“.yaml ir parašykite šį turinį:

apiVersion: partija / v1beta1
natūra: CronJob
metaduomenys:
vardas: my-cronjob
specifikacija:
tvarkaraštis: "* / 1 * * * *"
„jobTemplate“:
specifikacija:
šablonas:
specifikacija:
konteineriai:
- vardas: labas
vaizdas: busybox
argumentas:
- / bin / sh
- -c
- data; Sveikas iš „Kubernetes“ sankaupos
restartPolicy: OnFailure

Darbo grafiko dalis yra pati svarbiausia. Tai atitinka standartinę „Cron“ konvenciją, yra skaičių, atskirtų tarpais, sąrašas. Penki skaičiai reiškia,

  1. Minutė (0–59)
  2. Valanda (0–23)
  3. Mėnesio diena (1–31)
  4. Mėnuo (1–12)
  5. Savaitės diena (0–6) nuo sekmadienio

Žvaigždutės (*) lauke reiškia bet kokią turimą to lauko vertę (pvz., pakaitos simbolį), o pirmasis įrašas mūsų tvarkaraštyje „* / 1 * * * *“ nurodė, kad darbas turi būti vykdomas kiekvieną minutę, neatsižvelgiant į darbo valandą, dieną ar mėnesį. metai. Naudojant * / 5 pranešimas bus spausdinamas kas 5 minutes.

Daugiau apie „cronjob yaml“ specifikaciją galite sužinoti oficialiuose dokumentuose. Pažiūrėkime, kad visi ankštys eina į darbą, kurį pavadinome „my-cronjob“.

$ kubectl gauna ankštis
PAVADINIMAS PARUOŠTAS BŪKLĖ PAGAL PALEIDIMĄ AMŽIAUS
my-cronjob-1534457100-hfhzf 0/1 Baigta 0 2m
my-cronjob-1534457160-gk85l 0/1 Baigta 0 1m
my-cronjob-1534457220-bj22x 0/1 Baigta 0 57s

Kasant į kiekvienos ankšties žurnalą, atsiras vienas pranešimas su laiko žyme, nes visi jie buvo sukurti skirtingu laiku, visi turės skirtingas laiko žymes.

$ kubectl log my-cronjob-1534457100-hfhzf

Norėdami ištrinti „cronjob“, tiesiog paleiskite:

$ kubectl ištrinti -f my-cronjob.yaml

Taip pat bus ištrintos visos ankštys, sukurtos tinkamo proceso metu.

Literatūra

Čia galite sužinoti daugiau apie „Kubernetes Jobs“, o „Cron“ darbams galite apsilankyti šiame jų gerai struktūrizuotos dokumentacijos skyriuje.

5 populiariausi „Linux“ skirtų ergonomiškų kompiuterinių pelių produktai
Ar ilgalaikis kompiuterio naudojimas sukelia riešo ar pirštų skausmą?? Ar jūs kenčiate nuo sąnarių standumo ir nuolat turite paspausti rankas? Ar jauč...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Peržiūrėkite pelės mygtukus skirtingai programinei įrangai naudodami „X-Mouse Button Control“
Galbūt jums reikia įrankio, kuris galėtų pakeisti jūsų pelės valdymą kiekvienoje jūsų naudojamoje programoje. Tokiu atveju galite išbandyti programą, ...