Kubernetesel on analoogne viis ühekordsete protsesside käitamiseks Töökohad ja perioodilised protsessid nagu cron töökohti.
Alustame tüüpilisest näitest, mis on töökohad, ja demonstreerime ametliku dokumendi standardnäidet. Selle näite põhjal on Kubernetese kontekstis hõlpsasti mõistetav töö juhtimine hõlpsasti mõistetav.
Jätkamiseks soovitaksin teil kasutada Kubernetesele mõeldud Kataconda mänguväljakut, mis pakub Kubernetese klastrit kastist välja, ilma et peaksite seda käsitsi konfigureerima või riskima katsetega tootmisklastrit.
Kubernetes töökohad
Töökohad on kõrgema taseme Kubernetes'e abstraktsioonid, sarnaselt ReplicaSetsi ja juurutamistega. Kuid erinevalt juurutamise ja ReplicaSetsi hallatavatest kaunadest lõpetavad Jobi teostavad kaunad oma töö ja väljuvad.
Kui määratud arv kaunaid jõuab lõpule, on töö edukalt täidetud. Millised on kriteeriumid, mis määratlevad podi eduka lõpetamise, on see, mida määratleme Jobi YAML-failis. Seejärel kontrollib töö kontrollija, et teatud arv kaunasid on edukalt lõpetatud ja töö on väidetavalt täielik.
Loome töö, mis prindib oma logidesse pi numbreid kuni 2000 kohta, mida me uurime. Looge fail ja helistage sellele minu töö.yaml ja salvestage sinna järgmine sisu;
apiVersion: partii / v1liik: Töö
metaandmed:
nimi: pi
spetsifikatsioon:
mall:
spetsifikatsioon:
konteinerid:
- nimi: pi
pilt: perl
käsk: ["perl", "-Mbignum = bpi", "-wle", "print bpi (2000)"]
taaskäivitage poliitika: mitte kunagi
piir: 4
Looge töö selle faili abil:
$ kubectl luua -f ./ töökoht.yamlMärkate, et tööga töötamine võtab aega paar sekundit kuni paar minutit ja kui see on tehtud. Kui proovite kõik kaunad loetleda, kasutades järgmist:
$ kubectl saavad kaunadNIMI VALMIS STATUS TAASALUSTAB VANUSE
pi-wg6zp 0/1 Lõpetanud 0 50-d
Näete, et pi-ga seotud oleku olek on Valmis ei tööta ega ole lõpetatud.Võite kopeerida kauna nime, et saaksime kontrollida, kas pi on arvutatud 2000 numbrini. Kauna konkreetne nimi võib teie puhul erineda.
$ kubectl logib pi-wg6zpHuvitav on see, et kaun pole seda teinud Lõpetatud see on endiselt väga aktiivne, lihtsalt selle sees pole ühtegi rakendust. Sarnaselt lihtsalt arvuti sisselülitamisele ja selle mittekasutamisele. Kui kaun oleks lõpetatud, ei oleks me esiteks saanud palke sellest tõmmata.
Töö ja kõigi loodud kaunade puhastamiseks käivitage käsk:
$ kubectl kustutab -f minu-töökohad.yamlAmetlikes dokumentides saate lisateavet töö spetsifikatsioonide ja spetsifikatsiooni kirjutamise kohta.
Croni töökohad
Croni töökohad sarnanevad Croni utiliidiga Unixis, mis töötab perioodiliselt vastavalt meie soovitud ajakavale. Selle kirjutamise ajal ei ole see Kubernetes ülitugev asi, seega võiksite selle kasutamisel olla ettevaatlik. Ametlike dokumentide tsiteerimiseks:
“Croni töö loob tööobjekti umbes üks kord oma ajakava täitmisaja jooksul. Me ütleme “umbes”, sest teatud olukordades võidakse luua kaks töökohta või töökohta ei pruugi tekkida. Püüame muuta need haruldaseks, kuid ei takista neid täielikult. Seetõttu peaksid töökohad olema idempotent”
Termin idempotent tähendab, et üks või kaks korda või mitu korda teostatud Cron Jobil oleks süsteemile sama mõju. Värskenduste otsimist ja seda tüüpi toimingute jälgimist võib pidada idempotentseks. Kuid andmete muutmine või andmebaasi kirjutamine ei kuulu nende hulka.
Kirjutame croni töö, mis kirjutaks „Tere, maailm!”Sõnum oma logides koos ajatempliga, millal see kiri kirjutati. Looge fail nimega my-cronjob.yaml ja kirjuta sellele järgmine sisu:
apiVersion: partii / v1beta1selline: CronJob
metaandmed:
nimi: my-cronjob
spetsifikatsioon:
ajakava: "* / 1 * * * *"
jobTemplate:
spetsifikatsioon:
mall:
spetsifikatsioon:
konteinerid:
- nimi: tere
pilt: busybox
argumendid:
- / bin / sh
- -c
- kuupäev; kaja Tere Kubernetes klastrist
restartPolicy: OnFailure
Töö ajakavaosa on kõige olulisem. See järgib Croni standardset kokkulepet, seal on tühikutega eraldatud arvude loend. Viis numbrit tähistavad,
- Minut (0–59)
- Tund (0–23)
- Kuu päev (1-31)
- Kuu (1–12)
- Nädalapäev (0–6) alates pühapäevast
Tärni (*) väli tähendab selle välja mis tahes saadaolevat väärtust (näiteks metamärki) ja meie ajakava esimene kirje “* / 1 * * * *” näitas, et tööd tuleb käivitada iga minut olenemata kellaajast, päevast või kuust aasta. Kasutades * / 5, prinditakse sõnum iga 5 minuti järel.
Cronjob yamli spetsifikatsiooni kohta saate lisateavet ametlikest dokumentidest. Vaatame kõiki tööle asuvaid kaunasid, millele panime nimeks my-cronjob.
$ kubectl saavad kaunadNIMI VALMIS STATUS TAASALUSTAB VANUSE
my-cronjob-1534457100-hfhzf 0/1 Valmis 0 2m
my-cronjob-1534457160-gk85l 0/1 Valmis 0 1m
my-cronjob-1534457220-bj22x 0/1 Valmis 0 57s
Iga kauna logidesse kaevudes ilmuks üks sõnum ajatempliga, kuna need kõik loodi erinevatel aegadel, on neil kõigil erinevad ajatemplid.
$ kubectl logi my-cronjob-1534457100-hfhzfCronjobi kustutamiseks lihtsalt käivitage:
$ kubectl kustutab -f my-cronjob.yamlSee kustutab ka kõik õigel ajal loodud kaunad.
Viited
Kubernetes Jobsi kohta saate lisateavet siit ja Croni töökohtade kohta saate külastada nende hästi struktureeritud dokumentatsiooni jaotist.