Kubernetes

Kubernetes Jobs un Cron Jobs

Kubernetes Jobs un Cron Jobs
Lielākā daļa lietojumprogrammu, kas darbojas izplatītajā sistēmā, piemēram, Kubernetes, vienmēr darbojas kā tīmekļa serveri vai datu bāzes vai API serveri. Bet ir atsevišķa objektu klase, kas paredzēta, lai palaistu vienu reizi vai tikai ik pa laikam pamostos un palaistu savu kursu. Periodiski darbi, piemēram, TLS sertifikātu atjaunošana ar tādiem aģentiem kā Certbot, ir klasisks šādu darbu piemērs, kas darbojas tradicionālajos serveros. Tie tiek veikti, izmantojot Cron utilītu Unix sistēmās.

Kubernetes ir analogs veids, kā palaist vienreizējus procesus Darbs un periodiski procesi, piemēram, cron darbavietas.

Mēs sāksim ar tipisku piemēru tam, kas ir darbs, un parādīsim oficiālo dokumentu paraugu. No šī piemēra būs viegli saprast, ko tas nozīmē, veiksmīgi vadot darbu Kubernetes kontekstā.

Lai turpinātu sekot, es ieteiktu jums izmantot Kataconda Playground for Kubernetes, kas nodrošinās Kubernetes kopu no kastes, jums nav manuāli jākonfigurē vai jāriskē eksperimentiem ar ražošanas kopu.

Kubernetesa darbs

Darbi ir augstāka līmeņa Kubernetes abstrakcijas, līdzīgas ReplicaSets un Deployments. Bet atšķirībā no pākstīm, ko pārvalda izvietošana, un ReplicaSets, pākstis, kas veic darbu, pabeidz darbu un iziet.

Kad noteikts skaits pākšu ir sasniegts, darbs tiek veiksmīgi pabeigts. Kādi ir kritēriji, kas nosaka veiksmīgu pogas pārtraukšanu, mēs definēsim Job YAML failā. Tad darba kontrolieris nodrošinās, ka noteikts skaits pākšu ir veiksmīgi izbeigts un darbs tiek uzskatīts par pabeigtu.

Izveidosim darbu, kura žurnālos izdrukā pi ciparus līdz 2000 vietām, kurus mēs pārbaudīsim. Izveidojiet failu un izsauciet to Mans darbs.yaml un saglabājiet tajā šādu saturu;

apiVersion: partija / v1
veids: darbs
metadati:
nosaukums: pi
spec:
veidne:
spec:
konteineri:
- nosaukums: pi
attēls: perl
komanda: ["perl", "-Mbignum = bpi", "-wle", "print bpi (2000)"]
restartPolitika: Nekad
ierobežojums: 4

Izveidojiet darbu, izmantojot šo failu:

$ kubectl izveidot -f ./ darbs.yaml

Jūs pamanīsit, ka darbam ir nepieciešamas dažas sekundes līdz pāris minūtes, un, kad tas ir paveikts. Mēģinot uzskaitīt visas pākstis, izmantojot:

$ kubectl iegūst pākstis
VĀRDS GATAVS STATUSS ATKĀRTOTI VECUMS
pi-wg6zp 0/1 Pabeigti 0 50 gadi

Jūs redzēsiet, ka ar pi saistītās pogas statuss ir Pabeigts nedarbojas vai nav pārtraukta.Varat arī kopēt pākstis nosaukumu, lai mēs varētu pārbaudīt, vai pi patiešām ir aprēķināts līdz 2000 cipariem. Īpašais pākstis nosaukums jūsu gadījumā var atšķirties.

$ kubectl reģistrē pi-wg6zp

Interesanti, ka pāksts nav Likvidēts tas joprojām ir ļoti aktīvs, tikai tajā nav nevienas programmas. Līdzīgi kā vienkārši ieslēgt datoru un to nelietot. Ja pāksts tiktu izbeigts, mēs, pirmkārt, nebūtu varējuši no tā izvilkt apaļkokus.

Lai notīrītu darbu un visas izveidotās pākstis, palaidiet komandu:

$ kubectl izdzēst -f my-job.yaml

Oficiālajā dokumentācijā varat uzzināt vairāk par darba specifikācijām un to, kā ierakstīt specifikāciju.

Krona darbs

Cron Jobs ir līdzīgi Cron utilītprogrammai Unix, kas periodiski darbojas saskaņā ar mūsu vēlamo grafiku. Šīs rakstīšanas laikā Kubernetes tā nav pārsteidzoša lieta, tāpēc, iespējams, vēlēsities būt uzmanīgs. Citējot oficiālos dokumentus:

“Cron darbs rada darba objektu par reizi grafika izpildes laikā. Mēs sakām “par”, jo pastāv zināmi apstākļi, kad var tikt izveidotas divas darbavietas vai arī netiek radīta neviena darba vieta. Mēs cenšamies tos padarīt retus, bet pilnībā tos nenovēršam. Tāpēc darbavietām vajadzētu būt idempotents

Termins idempotent nozīmē, ka Cron Job neatkarīgi no tā, vai tas tiek veikts vienu vai divas reizes vai jebkuru laiku, sistēmai būs tāda pati ietekme. Atjauninājumu pārbaudi, šāda veida darbību uzraudzību var uzskatīt par nepamatotu. Bet datu modificēšana vai rakstīšana datubāzē nav to skaitā.

Uzrakstīsim cron darbu, kas uzrakstītu “Hello, World!”Ziņojumu savos žurnālos kopā ar laika zīmogu, kad šis ziņojums tika uzrakstīts. Izveidojiet failu ar nosaukumu my-cronjob.yaml un uzrakstiet šādu saturu:

apiVersion: partija / v1beta1
veids: CronJob
metadati:
nosaukums: my-cronjob
spec:
grafiks: "* / 1 * * * *"
jobTemplate:
spec:
veidne:
spec:
konteineri:
- vārds: sveiks
attēls: busybox
args:
- / bin / sh
- -c
- datums; atbalss Sveiki no Kubernetes kopas
restartPolicy: OnFailure

Darba grafika daļa ir vissvarīgākā. Tas atbilst standarta Cron konvencijai, ir numuru saraksts, kas atdalīts ar atstarpēm. Pieci skaitļi apzīmē,

  1. Minūte (0-59)
  2. Stunda (0–23)
  3. Mēneša diena (1-31)
  4. Mēnesis (1–12)
  5. Nedēļas diena (0-6), sākot no svētdienas

Izmantojot zvaigznīti (*) laukam ir jebkura šī lauka pieejamā vērtība (piemēram, aizstājējzīme), un pirmais ieraksts mūsu grafikā “* / 1 * * * *” norādīja, ka darbs ir jāveic katru minūti neatkarīgi no darba stundas, dienas vai mēneša. Gads. Izmantojot * / 5, ziņa tiks izdrukāta ik pēc 5 minūtēm.

Vairāk par cronjob yaml specifikāciju varat uzzināt oficiālajos dokumentos. Apskatīsim visas pākstis, kas darbojas šajā darbā, kuru mēs nosaucām par manu-cronjob.

$ kubectl iegūst pākstis
VĀRDS GATAVS STATUSS ATKĀRTOTI VECUMS
my-cronjob-1534457100-hfhzf 0/1 Pabeigts 0 2m
my-cronjob-1534457160-gk85l 0/1 Pabeigts 0 1m
my-cronjob-1534457220-bj22x 0/1 Pabeigts 0 57s

Rokoties katras pākstis žurnālos, tiktu parādīts viens ziņojums ar laika zīmogu, jo tie visi tika izveidoti dažādos laikos, tāpēc visiem tiem būs atšķirīgi laika zīmogi.

$ kubectl log my-cronjob-1534457100-hfhzf

Lai izdzēstu cronjob, vienkārši palaidiet:

$ kubectl dzēst -f my-cronjob.yaml

Tas arī izdzēsīs visas pākstis, kas tika izveidotas noteiktajā procesā.

Atsauces

Jūs varat uzzināt vairāk par Kubernetes Jobs šeit un Cron darbiem varat apmeklēt šo viņu labi strukturētās dokumentācijas sadaļu.

Labākie Linux spēļu draiveri 2021. gadā
Linux operētājsistēma ir gājusi tālu no sākotnējā, vienkāršā uz serveriem balstītā izskata. Šī operētājsistēma pēdējos gados ir ārkārtīgi uzlabojusies...
Kā tvert un straumēt spēļu sesiju operētājsistēmā Linux
Agrāk spēļu spēlēšana tika uzskatīta tikai par hobiju, taču laika gaitā spēļu industrija piedzīvoja milzīgu tehnoloģiju un spēlētāju skaita pieaugumu....
Labākās spēles, ko spēlēt ar rokas izsekošanu
Oculus Quest nesen iepazīstināja ar lielisku ideju par rokas izsekošanu bez kontrolieriem. Ar arvien lielāku spēļu un aktivitāšu skaitu, kas atbalsta ...