Kubernetes

Kubernetes Jobs a Cron Jobs

Kubernetes Jobs a Cron Jobs
Většina aplikací, které běží na distribuovaném systému, jako je Kubernetes, jsou vždy aktivní jako webové servery nebo databáze nebo servery API. Existuje ale samostatná třída objektů, které jsou určeny k běhu jednou nebo jen jednou za čas se probudí a rozběhnou se. Pravidelné úlohy, jako je obnovení certifikátu TLS s agenty, jako je Certbot, jsou klasickým příkladem takových úloh spuštěných na tradičních serverech. To se provádí pomocí obslužného programu Cron v systémech Unix.

Kubernetes má analogický způsob spouštění jednorázových procesů Pracovní místa a periodické procesy jako úlohy cron.

Začneme typickým příkladem toho, co jsou Jobs, a ukážeme standardní příklad z oficiálních dokumentů. Z tohoto příkladu bude snadné pochopit, co to znamená úspěšným spuštěním úlohy v kontextu Kubernetes.

Chcete-li pokračovat, doporučil bych vám použít hřiště Kataconda pro Kubernetes, které poskytne klastr Kubernetes mimo krabici, aniž byste museli ručně konfigurovat jeden nebo riskovat produkční cluster pro experimenty.

Kubernetes Jobs

Úlohy jsou vyšší úrovně Kubernetes abstrakce, podobné ReplicaSets a Deployments. Ale na rozdíl od lusků spravovaných nasazením a ReplicaSets, lusky provádějící úlohu dokončují svou práci a opouštějí se.

Když zadaný počet lusků dosáhne dokončení, říká se, že úloha byla úspěšně dokončena. Jaká jsou kritéria, která definují úspěšné ukončení modulu, definujeme v souboru YAML Job. Řadič úlohy pak zajistí, že určitý počet lusků byl úspěšně ukončen a úloha je považována za úplnou.

Vytvořme úlohu, která vytiskne číslice pí až 2 000 míst ve svých protokolech, které prozkoumáme. Vytvořte soubor a zavolejte jej moje práce.yaml a uložte do něj následující obsah;

apiVersion: batch / v1
druh: Job
metadata:
jméno: pi
spec:
šablona:
spec:
kontejnery:
- jméno: pi
obrázek: perl
příkaz: ["perl", "-Mbignum = bpi", "-wle", "tisknout bpi (2000)"]
restartPolicy: Nikdy
backoffLimit: 4

Vytvořte úlohu pomocí tohoto souboru:

$ kubectl create -f ./práce.yaml

Všimnete si, že spuštění úlohy trvá několik sekund až pár minut a jakmile je hotovo. Když se pokusíte vypsat všechny pody pomocí:

$ kubectl získat lusky
STAV JMÉNA PŘIPRAVENO VĚC RESTARTŮ
pi-wg6zp 0/1 Dokončeno 0 50 s

Uvidíte, že Stav pod související s pí je Dokončeno neběží ani není ukončeno.Můžete také zkopírovat název podu, abychom mohli ověřit, že pí bylo skutečně vypočteno na 2 000 číslic. Konkrétní název podložky se může ve vašem případě lišit.

$ kubectl protokoly pi-wg6zp

Je zajímavé, že lusk ne Ukončeno je stále velmi aktivní, jen v něm nejsou spuštěny žádné aplikace. Podobně jako pouhé zapnutí počítače a nepoužívání. Pokud by byl modul ukončen, vůbec bychom z něj nemohli vytáhnout protokoly.

Chcete-li vyčistit úlohu a všechny pody, které byly vytvořeny, spusťte příkaz:

$ kubectl delete -f my-jobs.yaml

Další informace o specifikacích úlohy a o tom, jak napsat svou specifikaci, najdete v oficiální dokumentaci.

Cron Jobs

Cron Jobs jsou podobné nástroji Cron v Unixu, který běží pravidelně podle plánu, který si přejeme. V době psaní tohoto článku to není v Kubernetes superstabilní věc, takže možná budete chtít být opatrní při používání. Citovat oficiální dokumenty:

"Úloha cron vytvoří objekt úlohy." o jednou za čas provedení svého plánu. Říkáme „o“, protože za určitých okolností mohou být vytvořeny dvě pracovní místa nebo nemusí být vytvořena žádná. Pokoušíme se je učinit vzácnými, ale nezabraňujeme jim úplně. Pracovní místa by proto měla být idempotentní

Termín idempotent znamená, že Cron Job, ať už provedený jednou nebo dvakrát nebo libovolně často, bude mít stejný účinek na systém. Při kontrole aktualizací lze monitorování těchto druhů operací považovat za idempotentní. Ale úprava dat nebo zápis do databáze mezi ně nepatří.

Pojďme napsat cron úlohu, která by napsala „Hello, World!„Zpráva ve svých protokolech spolu s časovým razítkem, kdy byla tato zpráva napsána. Vytvořte soubor s názvem my-cronjob.yaml a do něj napsat následující obsah:

apiVersion: batch / v1beta1
druh: CronJob
metadata:
jméno: my-cronjob
specifikace:
plán: "* / 1 * * * *"
šablona úlohy:
spec:
šablona:
spec:
kontejnery:
- jméno: ahoj
obrázek: busybox
args:
- / bin / sh
- -C
- datum; echo Dobrý den z klastru Kubernetes
restartPolicy: OnFailure

Nejdůležitější je naplánovaná část práce. Řídí se standardní Cronovou konvencí, existuje seznam čísel oddělených mezerami. Těchto pět čísel představuje,

  1. Minuta (0-59)
  2. Hodina (0-23)
  3. Den v měsíci (1-31)
  4. Měsíc (1-12)
  5. Den v týdnu (0-6) počínaje nedělí

Pomocí hvězdičky (*) pro pole znamená jakoukoli dostupnou hodnotu tohoto pole (jako zástupný znak) a první položka v našem plánu „* / 1 * * * *“ naznačila, že úloha musí být spuštěna každou minutu bez ohledu na hodinu, den nebo měsíc rok. Pomocí * / 5 se zpráva vytiskne každých 5 minut.

Další informace o specifikaci cronjob yaml se můžete dozvědět v oficiálních dokumentech. Podívejme se na všechny lusky běžící pro úlohu, kterou jsme pojmenovali my-cronjob.

$ kubectl získat lusky
STAV JMÉNA PŘIPRAVENO VĚC RESTARTUJE
my-cronjob-1534457100-hfhzf 0/1 Dokončeno 0 2 m
my-cronjob-1534457160-gk85l 0/1 Dokončeno 0 1 m
my-cronjob-1534457220-bj22x 0/1 Dokončeno 0 57 s

Kopání do protokolů každého z podů by odhalilo jednu zprávu s časovým razítkem, protože všechny byly vytvořeny v různých časech, všechny budou mít různá časová razítka.

$ kubectl log my-cronjob-1534457100-hfhzf

Chcete-li odstranit cronjob, jednoduše spusťte:

$ kubectl delete -f my-cronjob.yaml

Tím také odstraníte všechny pody, které byly vytvořeny v rámci procesu.

Reference

Více o Kubernetes Jobs se můžete dozvědět zde a pro úlohy Cron můžete navštívit tuto sekci jejich dobře strukturované dokumentace.

WinMouse vám umožňuje přizpůsobit a vylepšit pohyb ukazatele myši na PC s Windows
Chcete-li vylepšit výchozí funkce ukazatele myši, použijte freeware WinMouse. Přidává další funkce, které vám pomohou vytěžit ze své skromné ​​myši ma...
V systému Windows 10 nefunguje levé tlačítko myši
Pokud používáte speciální myš s notebookem nebo stolním počítačem, ale levé tlačítko myši nefunguje ve Windows 10/8/7 z nějakého důvodu uvádíme několi...
Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...