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 / v1veids: 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.yamlJū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ākstisVĀ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-wg6zpInteresanti, 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.yamlOficiā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 / v1beta1veids: 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ē,
- Minūte (0-59)
- Stunda (0–23)
- Mēneša diena (1-31)
- Mēnesis (1–12)
- 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ākstisVĀ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-hfhzfLai izdzēstu cronjob, vienkārši palaidiet:
$ kubectl dzēst -f my-cronjob.yamlTas 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.