Kubernetes

Pekerjaan Kubernetes dan Kerja Kron

Pekerjaan Kubernetes dan Kerja Kron
Sebilangan besar aplikasi yang berjalan pada sistem yang diedarkan seperti Kubernetes selalu hidup seperti pelayan web atau pangkalan data atau pelayan API. Tetapi ada kelas objek yang berasingan yang dimaksudkan untuk berjalan sekali atau hanya bangun sesekali dan menjalankan perjalanannya. Pekerjaan berkala seperti pembaharuan sijil TLS dengan ejen seperti Certbot adalah contoh klasik pekerjaan seperti itu dijalankan pada pelayan tradisional. Ini dilakukan dengan menggunakan utiliti Cron dalam sistem Unix.

Kubernetes mempunyai cara yang serupa untuk menjalankan proses sekali sahaja Pekerjaan dan proses berkala seperti pekerjaan cron.

Kami akan memulakan dengan contoh biasa mengenai Pekerjaan dan menunjukkan contoh standard dari Dokumen rasmi. Dari contoh ini akan mudah difahami maksudnya dengan menjalankan Pekerjaan dengan jayanya dalam konteks Kubernetes.

Untuk mengikuti, saya akan mengesyorkan anda menggunakan Kataconda Playground untuk Kubernetes yang akan menyediakan kluster Kubernetes di luar kotak tanpa anda perlu mengkonfigurasinya secara manual atau mempertaruhkan kluster pengeluaran untuk eksperimen.

Pekerjaan Kubernetes

Pekerjaan adalah abstraksi Kubernetes tahap lebih tinggi, serupa dengan ReplikaSet dan Deployment. Tetapi tidak seperti pod yang dikendalikan oleh penyebaran dan ReplicaSet, pod yang menjalankan Job menyelesaikan tugasnya dan keluar.

Apabila bilangan pod tertentu selesai, Pekerjaan dikatakan berjaya diselesaikan. Apa kriteria yang menentukan penamatan pod yang berjaya adalah sesuatu yang akan kita tentukan dalam fail YAML Job. Kemudian pengawal Pekerjaan akan memastikan bahawa sebilangan pod berjaya ditamatkan dan Pekerjaan dikatakan lengkap.

Mari buat pekerjaan yang mencetak digit pi hingga 2000 tempat di lognya yang akan kami kaji. Buat fail dan panggilnya tugas saya.keladi dan simpan kandungan berikut di dalamnya;

apiVersion: kumpulan / v1
baik: Pekerjaan
metadata:
nama: pi
spesifikasi:
templat:
spesifikasi:
bekas:
- nama: pi
gambar: perl
arahan: ["perl", "-Mbignum = bpi", "-wle", "print bpi (2000)"]
mulakan semula Dasar: Tidak pernah
backoffLimit: 4

Buat pekerjaan, menggunakan fail ini:

$ kubectl buat -f ./ pekerjaan.keladi

Anda akan melihat bahawa kerja dengan mengambil masa beberapa saat hingga beberapa minit untuk dijalankan dan setelah selesai. Apabila anda mencuba menyenaraikan semua pod menggunakan:

$ kubectl dapatkan pod
NAMA READY STATUS RESTARTS UMUR
pi-wg6zp 0/1 Selesai 0 50-an

Anda akan melihat bahawa Status pod berkaitan pi adalah Selesai tidak berjalan atau ditamatkan.Anda juga boleh menyalin nama pod sehingga kami dapat mengesahkan bahawa pi memang telah dikira hingga 2000 digit. Nama khusus pod mungkin berbeza mengikut kes anda.

$ kubectl log pi-wg6zp

Cukup menarik, pod belum Ditamatkan ia masih aktif, tidak ada aplikasi yang berjalan di dalamnya. Sama seperti menghidupkan komputer anda dan tidak menggunakannya. Sekiranya pod ditamatkan, kita tidak akan dapat mencabut log daripadanya.

Untuk membersihkan tugas dan semua pod yang dibuat, jalankan arahan:

$ kubectl delete -f my-jobs.keladi

Anda boleh mengetahui lebih lanjut mengenai spesifikasi Pekerjaan dan cara menulis spesifikasi anda dalam dokumentasi rasmi.

Pekerjaan Cron

Pekerjaan Cron serupa dengan utiliti Cron di Unix yang berjalan secara berkala mengikut jadual yang kami mahukan. Ini bukan perkara takhayul di Kubernetes, pada masa penulisan ini, jadi anda mungkin ingin berhati-hati menggunakan. Untuk memetik dokumen rasmi:

"Pekerjaan cron membuat objek pekerjaan mengenai sekali setiap masa pelaksanaan jadualnya. Kami mengatakan "tentang" kerana ada keadaan tertentu di mana dua pekerjaan mungkin dibuat, atau tidak ada pekerjaan yang mungkin dibuat. Kami berusaha menjadikannya jarang, tetapi tidak menghalangnya sepenuhnya. Oleh itu, pekerjaan semestinya tidak berkemampuan"

Istilah idempoten bermaksud bahawa Pekerjaan Cron sama ada dilakukan sekali atau dua kali atau sebilangan masa akan memberi kesan yang sama pada sistem. Memeriksa kemas kini, memantau operasi seperti itu boleh dianggap tidak sesuai. Tetapi mengubah data, atau menulis ke pangkalan data tidak termasuk di antaranya.

Mari tulis pekerjaan cron yang akan menulis "Hello, World!"Mesej di lognya bersama dengan cap waktu ketika mesej itu ditulis. Buat fail yang dipanggil my-cronjob.yaml dan untuk itu tuliskan kandungan berikut:

apiVersion: batch / v1beta1
baik: CronJob
metadata:
nama: my-cronjob
spesifikasi:
jadual: "* / 1 * * * *"
templat pekerjaan:
spesifikasi:
templat:
spesifikasi:
bekas:
- nama: hello
gambar: busybox
berhujah:
- / tong / sh
- -c
- Tarikh; gema Hello dari kelompok Kubernetes
mulakan semulaPolicy: OnFailure

Bahagian jadual tugas adalah yang paling penting. Ia mengikuti konvensi Cron standard, terdapat senarai nombor yang dipisahkan dengan spasi. Lima nombor tersebut mewakili,

  1. Minit (0-59)
  2. Jam (0-23)
  3. Hari Bulan (1-31)
  4. Bulan (1-12)
  5. Hari dalam seminggu (0-6) bermula dari hari Ahad

Menggunakan tanda bintang (*) untuk medan bermaksud apa-apa nilai yang tersedia dari bidang itu (seperti wildcard) dan entri pertama dalam jadual kami "* / 1 * * * *" menunjukkan bahawa tugas mesti dijalankan setiap minit tanpa mengira jam, hari atau bulan tahun. Menggunakan * / 5 akan mencetak mesej setiap 5 minit.

Anda boleh mengetahui lebih lanjut mengenai spesifikasi cramjob yaml dalam dokumen rasmi. Mari lihat semua pod berjalan untuk pekerjaan itu, yang kami namakan my-cronjob.

$ kubectl dapatkan pod
NAMA READY STATUS RESTARTS UMUR
my-cronjob-1534457100-hfhzf 0/1 Selesai 0 2m
my-cronjob-1534457160-gk85l 0/1 Selesai 0 1m
my-cronjob-1534457220-bj22x 0/1 Selesai 0 57s

Menggali log setiap pod akan mendedahkan satu mesej dengan cap waktu, kerana semuanya dibuat pada masa yang berlainan, mereka semua akan mempunyai cap waktu yang berbeza.

$ kubectl log my-cronjob-1534457100-hfhzf

Untuk memadam cronjob, jalankan:

$ kubectl delete -f my-cronjob.keladi

Ini juga akan menghapus sebarang pod yang dibuat dalam proses yang sewajarnya.

Rujukan

Anda boleh mengetahui lebih lanjut mengenai Pekerjaan Kubernetes di sini dan untuk pekerjaan Cron anda boleh mengunjungi bahagian dokumentasi berstruktur mereka yang baik ini.

Cara Menunjukkan Kaunter FPS dalam Permainan Linux
Permainan Linux mendapat dorongan utama ketika Valve mengumumkan sokongan Linux untuk klien Steam dan permainan mereka pada tahun 2012. Sejak itu, ban...
Cara memuat turun dan Mainkan Sid Meier's Civilization VI di Linux
Pengenalan permainan Civilization 6 adalah konsep moden mengenai konsep klasik yang diperkenalkan dalam siri permainan Age of Empires. Idea itu cukup ...
Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...