Kubernetes

Kubernetes Jobs i Cron Jobs

Kubernetes Jobs i Cron Jobs
Većina aplikacija koje se izvode na distribuiranom sustavu poput Kubernetesa uvijek su aktivne poput web poslužitelja ili baze podataka ili API poslužitelja. No, postoji zasebna klasa objekata kojima je predviđeno da se pokrenu jednom ili se samo povremeno probude i pokrenu svoj kurs. Povremeni poslovi poput obnavljanja TLS certifikata s agentima poput Certbota klasični su primjer takvih poslova koji se izvode na tradicionalnim poslužiteljima. To se radi pomoću uslužnog programa Cron u Unix sustavima.

Kubernetes ima analogan način izvođenja jednokratnih procesa Poslovi i periodični procesi poput cron poslovi.

Započet ćemo s tipičnim primjerom onoga što su Jobs i demonstrirat ćemo standardni primjer iz službenih dokumenata. Iz ovog primjera bit će lako razumjeti što znači uspješno pokretanje posla u Kubernetesovom kontekstu.

Da biste nastavili dalje, preporučio bih vam da koristite igralište Kataconda za Kubernetes koje će pružiti Kubernetes klaster bez potrebe da ga ručno konfigurirate ili riskirate proizvodni klaster za eksperimente.

Kubernetes Jobs

Poslovi su apstrakcije Kubernetesa više razine, slične ReplicaSets i Deployments. No, za razliku od mahuna kojima upravljaju implementacije i ReplicaSets, mahune koje izvršavaju posao dovršavaju svoj posao i izlaze.

Kada se određeni broj mahuna završi, posao se uspješno dovršio. Koji su kriteriji koji definiraju uspješan završetak mahune, nešto ćemo definirati u Job's YAML datoteci. Tada će kontrolor posla osigurati da je određeni broj mahuna uspješno okončan i da je posao završen.

Stvorimo posao koji u svoje zapisnike ispisuje znamenke pi do 2000 mjesta koje ćemo ispitati. Stvorite datoteku i pozovite je moj posao.yaml i spremite u njega sljedeći sadržaj;

apiVersion: batch / v1
vrsta: Posao
metapodaci:
naziv: pi
specifikacija:
predložak:
specifikacija:
spremnici:
- naziv: pi
slika: perl
naredba: ["perl", "-Mbignum = bpi", "-wle", "print bpi (2000)"]
restartPolicy: Nikad
backoffLimit: 4

Stvorite posao pomoću ove datoteke:

$ kubectl stvori -f ./posao.yaml

Primijetit ćete da posao traje nekoliko sekundi do nekoliko minuta i nakon što završi. Kada pokušate navesti sve mahune pomoću:

$ kubectl dobiti mahune
IME SPREMNI STATUS VRAĆA DOBU
pi-wg6zp 0/1 Završeno 0 50-ih

Vidjet ćete da je status mahune povezane s pi Dovršeno ne radi ili nije ukinut.Također možete kopirati naziv mahune kako bismo mogli provjeriti je li pi doista izračunata na 2000 znamenki. Određeni naziv mahune može se razlikovati u vašem slučaju.

$ kubectl zapisnici pi-wg6zp

Zanimljivo je da mahuna nije Prekinuta još uvijek je vrlo aktivan, samo što u njemu nema pokrenutih aplikacija. Slično kao kad samo uključite računalo i ne koristite ga. Da je mahuna prekinuta, prije svega ne bismo mogli izvući trupce s nje.

Da biste očistili posao i sve stvorene mahune, pokrenite naredbu:

$ kubectl delete -f my-jobs.yaml

Možete saznati više o specifikacijama posla i kako ih napisati u službenoj dokumentaciji.

Cron Jobs

Cron Jobs sličan je uslužnom programu Cron u Unixu koji se povremeno izvodi prema rasporedu koji želimo. To nije superstabilna stvar u Kubernetesu, u vrijeme pisanja ovog članka, pa biste možda trebali biti oprezni pri korištenju. Da citiramo službene dokumente:

“Cron posao stvara objekt posla oko jednom za vrijeme izvršenja svog rasporeda. Kažemo "otprilike", jer postoje određene okolnosti u kojima se mogu stvoriti dva radna mjesta ili se ne može stvoriti nikakvo radno mjesto. Nastojimo to učiniti rijetkim, ali ih ne sprječavamo u potpunosti. Prema tome, poslovi bi trebali biti idempotentan"

Izraz idempotent znači da bi Cron Job, bilo da se izvodi jednom ili dva puta ili bilo koji broj vremena, imao isti učinak na sustav. Provjera ažuriranja, nadgledanje takvih operacija može se smatrati neimpotentnim. No, izmjena podataka ili upisivanje u bazu podataka nisu među njima.

Napišimo cron posao koji bi napisao „Zdravo, svijete!”U svojim zapisnicima, zajedno s vremenskom oznakom kada je ta poruka napisana. Stvori datoteku nazvanu my-cronjob.yaml i na njega napiši sljedeći sadržaj:

apiVersion: batch / v1beta1
vrsta: CronJob
metapodaci:
ime: moj-cronjob
specifikacija:
raspored: "* / 1 * * * *"
predložak posla:
specifikacija:
predložak:
specifikacija:
spremnici:
- ime: zdravo
slika: zauzeto
argumenti:
- / bin / sh
- -c
- datum; eho Hello iz klastera Kubernetes
restartPolicy: OnFailure

Rasporedni dio posla je najvažniji. Slijedi standardnu ​​konvenciju Cron, postoji popis brojeva odvojenih razmacima. Pet brojeva predstavljaju,

  1. Minuta (0-59)
  2. Sat (0-23)
  3. Dan u mjesecu (1-31)
  4. Mjesec (1-12)
  5. Dan u tjednu (0-6) počevši od nedjelje

Korištenje zvjezdice (*) za polje znači bilo koju raspoloživu vrijednost tog polja (poput zamjenskog znaka) i prvi unos u našem rasporedu “* / 1 * * * *” označavao je da se posao mora izvoditi svake minute bez obzira na sat, dan ili mjesec godina. Korištenje * / 5 ispisat će poruku svakih 5 minuta.

Više o specifikaciji cronjob yaml možete saznati u službenim dokumentima. Pogledajmo sve mahune koje se kandidiraju za posao koji smo nazvali my-cronjob.

$ kubectl dobiti mahune
IME SPREMNI STATUS VRAĆA DOBU
my-cronjob-1534457100-hfhzf 0/1 Završeno 0 2m
my-cronjob-1534457160-gk85l 0/1 Završeno 0 1m
my-cronjob-1534457220-bj22x 0/1 Završeno 0 57s

Ukopavanjem u zapisnike svake mahune otkrila bi se jedna poruka s vremenskom oznakom, budući da su svi stvoreni u različito vrijeme, svi će imati različite vremenske oznake.

$ kubectl log my-cronjob-1534457100-hfhzf

Da biste izbrisali cronjob, jednostavno pokrenite:

$ kubectl delete -f my-cronjob.yaml

Ovim ćete također izbrisati sve mahune stvorene u odgovarajućem postupku.

Reference

Ovdje možete saznati više o Kubernetesovim poslovima, a za Cron poslove možete posjetiti ovaj odjeljak njihove dobro strukturirane dokumentacije.

Dodajte geste miša u sustav Windows 10 pomoću ovih besplatnih alata
Posljednjih godina računala i operativni sustavi uvelike su se razvili. Bilo je vrijeme kada su korisnici morali koristiti naredbe za navigaciju kroz ...
Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...
WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...