Kubernetes

Pracovné miesta Kubernetes a Cron Jobs

Pracovné miesta Kubernetes a Cron Jobs
Väčšina aplikácií, ktoré bežia na distribuovanom systéme, ako je Kubernetes, sú vždy aktívne ako webové servery alebo databázy alebo servery API. Existuje ale samostatná trieda objektov, ktoré sú určené na to, aby bežali raz alebo sa zobudili len raz za čas a rozbehli sa. Pravidelné úlohy ako obnovenie certifikátu TLS s agentmi ako Certbot sú klasickým príkladom takýchto úloh bežiacich na tradičných serveroch. To sa deje pomocou obslužného programu Cron v systémoch Unix.

Kubernetes má analogický spôsob spustenia jednorazových procesov Pracovné miesta a periodické procesy ako úlohy cron.

Začneme typickým príkladom toho, čo sú Jobs, a ukážeme štandardný príklad z oficiálnych dokumentov. Z tohto príkladu bude ľahké pochopiť, čo to znamená, úspešným spustením úlohy v kontexte Kubernetes.

Ak chcete postupovať ďalej, odporúčam vám použiť ihrisko Kataconda pre Kubernetes, ktoré poskytne klaster Kubernetes mimo krabicu bez toho, aby ste jeden museli manuálne konfigurovať alebo riskovať produkčný klaster pre experimenty.

Kubernetes Jobs

Úlohy sú Abstrakcie vyššej úrovne Kubernetes, podobné ako ReplicaSets a Deployments. Ale na rozdiel od podov spravovaných nasadeniami a ReplicaSets, pody vykonávajúce úlohu dokončujú svoju prácu a ukončujú prácu.

Keď sa zadaný počet podov dosiahne, úloha je údajne úspešne dokončená. Aké sú kritériá, ktoré definujú úspešné ukončenie modulu, je niečo, čo definujeme v súbore Job YAML. Potom radič úloh zabezpečí, že určitý počet podov sa úspešne ukončil a úloha sa považuje za dokončenú.

Vytvorme úlohu, ktorá do svojich protokolov vytlačí číslice pí až na 2 000 miest, ktoré preskúmame. Vytvorte súbor a zavolajte mu moja práca.yaml a uložte do nej nasledujúci obsah;

apiVersion: batch / v1
druh: Job
metadáta:
meno: pi
spec:
šablóna:
spec:
kontajnery:
- meno: pi
obrázok: perl
príkaz: ["perl", "-Mbignum = bpi", "-wle", "tlačiť bpi (2000)"]
restartPolicy: Nikdy
spätný limit: 4

Vytvorte úlohu pomocou tohto súboru:

$ kubectl create -f ./ zamestnanie.yaml

Všimnete si, že spustenie úlohy trvá niekoľko sekúnd až pár minút a po dokončení. Keď sa pokúsite vypísať všetky pody pomocou:

$ kubectl získať struky
STAV NÁZOV PRIPRAVENÝ NARODENÝ VEK
pi-wg6zp 0/1 Dokončené 50. roky

Uvidíte, že stav modulu súvisiaceho s pí je Dokončené nefunguje alebo je ukončený.Môžete tiež kopírovať názov modulu, aby sme mohli overiť, že hodnota pi bola skutočne vypočítaná na 2 000 číslic. Konkrétny názov podložky sa môže vo vašom prípade líšiť.

$ kubectl prihlási pi-wg6zp

Je zaujímavé, že pod nie Ukončené je stále veľmi aktívny, len v ňom nie sú spustené žiadne aplikácie. Podobné, ako keď zapnete počítač a nepoužívate ho. Keby bol modul ukončený, neboli by sme z neho v prvom rade schopní vytiahnuť polená.

Ak chcete vyčistiť úlohu a všetky vytvorené pody, spustite príkaz:

$ kubectl delete -f my-jobs.yaml

Viac informácií o špecifikáciách úloh a o tom, ako zapísať svoje špecifikácie, sa dozviete v oficiálnej dokumentácii.

Cron Jobs

Cron Jobs sú podobné ako Cron utilita v Unixe, ktorá beží pravidelne podľa plánu, ktorý si prajeme. V čase písania článku to nie je v Kubernetes superstabilná vec, takže možno budete chcieť opatrne používať. Citovať oficiálne dokumenty:

"Úloha cron vytvorí objekt úlohy." o raz za čas vykonania jeho harmonogramu. Hovoríme „o“, pretože za určitých okolností môžu vzniknúť dve pracovné miesta alebo sa nemusí vytvoriť žiadna. Snažíme sa, aby boli tieto vzácne, ale nebránime im úplne. Pracovné miesta by preto mali byť idempotentný

Pojem idempotent znamená, že úloha Cron, či už bola vykonaná raz alebo dvakrát alebo v ľubovoľnom počte časov, by mala na systém rovnaký účinok. Kontrolu aktualizácií a monitorovanie týchto operácií je možné považovať za idempotentné. Ale úprava údajov alebo zápis do databázy medzi ne nepatria.

Poďme napísať úlohu cron, ktorá by napísala „Hello, World!”V protokoloch spolu s časovou známkou, kedy bola táto správa napísaná. Vytvorte súbor s názvom my-cronjob.yaml a k tomu napíš nasledujúci obsah:

apiVersion: batch / v1beta1
druh: CronJob
metadáta:
meno: my-cronjob
spec:
plán: "* / 1 * * * *"
jobTemplate:
spec:
šablóna:
spec:
kontajnery:
- meno: ahoj
obrázok: busybox
args:
- / bin / sh
- -c
- dátum; echo Dobrý deň z klastra Kubernetes
restartPolicy: OnFailure

Časová časť práce je najdôležitejšia. Riadi sa štandardnou Cron konvenciou, existuje zoznam čísel oddelených medzerami. Týchto päť čísel predstavuje,

  1. Minúta (0-59)
  2. Hodina (0-23)
  3. Deň v mesiaci (1-31)
  4. Mesiac (1-12)
  5. Deň v týždni (0-6) začínajúci od nedele

Pomocou hviezdičky (*) pre pole znamená akúkoľvek dostupnú hodnotu tohto poľa (ako zástupný znak) a prvý záznam v našom pláne „* / 1 * * * *“ naznačil, že úloha musí byť spustená každú minútu bez ohľadu na hodinu, deň alebo mesiac rok. Pomocou * / 5 sa správa vytlačí každých 5 minút.

Viac informácií o špecifikácii cronjob yaml sa môžete dozvedieť v oficiálnych dokumentoch. Pozrime sa, ako všetky pody bežia pre úlohu, ktorú sme nazvali my-cronjob.

$ kubectl získať struky
STAV NÁZOV PRIPRAVENÝ NARODENÝ VEK
my-cronjob-1534457100-hfhzf 0/1 Dokončené 0 2m
my-cronjob-1534457160-gk85l 0/1 Dokončené 0 1m
my-cronjob-1534457220-bj22x 0/1 Dokončené 0 57s

Hĺbenie do protokolov každého z podov by odhalilo jednu správu s časovou pečiatkou, pretože všetky boli vytvorené v rôznych časoch, všetky budú mať odlišné časové pečiatky.

$ kubectl log my-cronjob-1534457100-hfhzf

Pre odstránenie cronjob jednoducho spustite:

$ kubectl delete -f my-cronjob.yaml

Týmto sa odstránia aj všetky pody, ktoré boli vytvorené v rámci riadneho procesu.

Referencie

Viac informácií o pracovných pozíciách Kubernetes sa dozviete tu a pre pracovné miesta Cron môžete navštíviť túto časť ich štruktúrovanej dokumentácie.

Ako zmeniť nastavenie myši a touchpadu pomocou systému Xinput v systéme Linux
Väčšina distribúcií systému Linux sa štandardne dodáva s knižnicou „libinput“ na spracovanie vstupných udalostí v systéme. Dokáže spracovať vstupné ud...
S ovládaním pomocou myši X-Mouse môžete tlačidlá myši premapovať odlišne pre iný softvér
Možno budete potrebovať nástroj, ktorý by mohol zmeniť ovládanie myši pri každej aplikácii, ktorú používate. Ak je to váš prípad, môžete vyskúšať apli...
Recenzia bezdrôtovej myši Microsoft Sculpt Touch
Nedávno som čítal o Microsoft Sculpt Touch bezdrôtová myš a rozhodol sa ju kúpiť. Po chvíli používania som sa rozhodol s ním podeliť o svoje skúsenost...