Kubernetes

Kubernetes Jobs és Cron Jobs

Kubernetes Jobs és Cron Jobs
Az olyan elosztott rendszeren futó alkalmazások többsége, mint a Kubernetes, mindig élnek, mint a webszerverek vagy adatbázisok vagy az API-kiszolgálók. Van azonban egy külön osztályú objektum, amelynek célja, hogy egyszer fusson, vagy csak néha ébredjen fel, és fusson a pályáján. Az olyan időszakos munkák, mint a TLS-tanúsítványok megújítása olyan ügynökökkel, mint a Certbot, klasszikus példája az ilyen munkáknak, amelyek hagyományos szervereken futnak. Ezeket a Cron segédprogram segítségével hajtják végre a Unix rendszerekben.

A Kubernetes analóg módon futtatja az egyszeri folyamatokat Állások és periodikus folyamatok, mint cron munkahelyek.

Kezdjük egy tipikus példával arra, hogy mi a Jobs, és bemutatunk egy szabványos példát a hivatalos Dokumentumokból. Ebből a példából könnyen meg lehet érteni, mit jelent az, ha egy Jobot sikeresen futtatunk Kubernetes kontextusában.

A folytatáshoz javasoljuk, hogy használja a Kataconda Playground for Kubernetes alkalmazást, amely a dobozon kívüli Kubernetes-fürtöt biztosítja, anélkül, hogy manuálisan kellene konfigurálnia, vagy megkísérelné a termelési fürtöt a kísérletekhez.

Kubernetes Jobs

A munkák magasabb szintű Kubernetes-absztrakciók, hasonlóak a ReplicaSets és a Deployments-hez. De a telepítések által kezelt hüvelyektől és a ReplicaSetsektől eltérően a Jobot végrehajtó hüvelyek befejezik munkájukat és kilépnek.

Amikor egy meghatározott számú hüvely teljes, a Munka sikeresen befejeződött. Melyek azok a kritériumok, amelyek meghatározzák a pod sikeres befejezését, meg fogjuk határozni a Job YAML fájljában. Ezután a Job vezérlő biztosítja, hogy bizonyos számú pod sikeresen megszűnt, és a Job állítólag teljes legyen.

Hozzunk létre egy munkát, amely naplóba kinyomtatja a pi számjegyeit akár 2000 helyre is, amelyeket megvizsgálunk. Hozzon létre egy fájlt, és hívja meg a munkám.yaml és mentse bele a következő tartalmat;

apiVersion: kötegelt / v1
fajta: Job
metaadatok:
név: pi
specifikáció:
sablon:
specifikáció:
konténerek:
- név: pi
kép: perl
parancs: ["perl", "-Mbignum = bpi", "-wle", "print bpi (2000)"]
restartPolicy: Soha
korlátozás: 4

Hozza létre a munkát a következő fájl segítségével:

$ kubectl create -f ./munka.yaml

Észre fogja venni, hogy a feladat lefutása néhány másodperctől pár percig tart, és miután elkészült. Amikor megpróbálja felsorolni az összes hüvelyt:

$ kubectl kap hüvelyeket
NÉV KÉSZ ÁLLAPOT ÚJRA KEZDIK
pi-wg6zp 0/1 Befejezett 0 50-es évek

Látni fogja, hogy a pi-vel kapcsolatos pod állapota az Elkészült nem fut vagy megszűnik.Másolhatja a hüvely nevét is, így ellenőrizhetjük, hogy a pi valóban 2000 számjeggyel lett kiszámítva. A hüvely konkrét neve esetenként eltérhet.

$ kubectl naplózza pi-wg6zp

Érdekes módon a pod nem Megszűnt még mindig nagyon aktív, csak hogy nem futnak benne alkalmazások. Hasonló ahhoz, hogy csak bekapcsolja a számítógépet, és nem használja. Ha a hüvely megszűnik, akkor elsősorban nem tudtuk volna kihúzni belőle a rönköket.

A feladat és az összes létrehozott csomag tisztításához futtassa a parancsot:

$ kubectl -f my-jobok törlése.yaml

A Hivatalos dokumentációban többet megtudhat a Munka specifikációiról és a specifikáció megírásának módjáról.

Cron Jobs

A Cron Jobs hasonló a Cron segédprogramhoz a Unixban, amely időszakosan fut egy vágyott ütemezés szerint. Ez a cikk írásakor nem egy fantasztikus dolog a Kubernetesben, ezért érdemes óvatosnak lennie a használatával. A hivatalos dokumentumokat idézve:

„A cron-munka létrehoz egy munkaobjektumot ról ről ütemtervének végrehajtási idejénként egyszer. Azért mondjuk, hogy „kb.”, Mert bizonyos körülmények között előfordulhat, hogy két munkahely jön létre, vagy nem jön létre munkahely. Megpróbáljuk ezeket ritkítani, de nem akadályozzuk meg teljesen. Ezért a munkahelyeknek meg kell lenniük idempotens

Az idempotent kifejezés azt jelenti, hogy a Cron Job függetlenül attól, hogy egyszer vagy kétszer vagy akárhányszor elvégezték-e, ugyanolyan hatással lesz a rendszerre. A frissítések keresése, az ilyen jellegű műveletek figyelése idempotensnek tekinthető. De az adatok módosítása vagy az adatbázisba történő írás nem tartozik ezek közé.

Írjunk egy cron munkát, amely egy „Hello, World!”Üzenetet a naplóiban, az időbélyegzővel együtt, hogy az üzenet mikor készült. Hozzon létre my-cronjob nevű fájlt.yaml és írd hozzá a következő tartalmat:

apiVersion: batch / v1beta1
fajta: CronJob
metaadatok:
név: my-cronjob
specifikáció:
ütemezés: "* / 1 * * * *"
jobTemplate:
specifikáció:
sablon:
specifikáció:
konténerek:
- név: szia
kép: busybox
érvel:
- / bin / sh
- -c
- dátum; echo Hello a Kubernetes fürtből
restartPolicy: OnFailure

A munka ütemezett része a legfontosabb. Ez a szokásos Cron-egyezményt követi, szóközökkel elválasztva szerepel a számok listája. Az öt szám képviseli,

  1. Perc (0-59)
  2. Óra (0–23)
  3. A hónap napja (1-31)
  4. Hónap (1-12)
  5. A hét napja (0-6) vasárnaptól kezdődően

Csillag (*) egy mező esetében a mező bármely rendelkezésre álló értéke (például egy helyettesítő karakter), és az ütemterv első bejegyzése „* / 1 * * * *” azt jelezte, hogy a munkát percenként kell futtatni, függetlenül a az év. A * / 5 használatával 5 percenként kinyomtatja az üzenetet.

A cronjob yaml specifikációról többet megtudhat a hivatalos dokumentumokban. Lássuk az összes munkára futó hüvelyt, amelyet my-cronjobnak neveztünk el.

$ kubectl kap hüvelyeket
NÉV KÉSZ ÁLLAPOT ÚJRA KEZDIK
my-cronjob-1534457100-hfhzf 0/1 Befejezve 0 2m
my-cronjob-1534457160-gk85l 0/1 Kész 0 1m
my-cronjob-1534457220-bj22x 0/1 Befejezett 0 57s

Az egyes hüvelyek naplóibába ásva egyetlen üzenet jelenik meg időbélyeggel, mivel mindegyikük különböző időpontokban jött létre, mindegyiküknek különböző időbélyegei lesznek.

$ kubectl log my-cronjob-1534457100-hfhzf

A cronjob törléséhez egyszerűen futtassa:

$ kubectl törölje -f my-cronjob.yaml

Ez törli az esetleges folyamat során létrehozott podokat is.

Hivatkozások

Itt többet megtudhat a Kubernetes Jobs-ról, a Cron-feladatokhoz pedig felkeresheti a jól felépített dokumentációjuk ezen szakaszát.

Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...
Sid Meier Civilization VI letöltése és lejátszása Linuxon
Bevezetés a játékba A Civilization 6 egy modern felvétel a Age of Empires játékok sorozatában bevezetett klasszikus koncepcióra. Az ötlet meglehetősen...
A Doom telepítése és lejátszása Linuxon
Bevezetés a Doom-ba A Doom sorozat a 90-es években keletkezett az eredeti Doom megjelenése után. Azonnali sláger volt, és ettől kezdve a játéksorozat ...