Kubernetes

Pekerjaan Kubernetes dan Pekerjaan Cron

Pekerjaan Kubernetes dan Pekerjaan Cron
Sebagian besar aplikasi yang berjalan pada sistem terdistribusi seperti Kubernetes selalu hidup seperti server web atau database atau server API. Tetapi ada kelas objek terpisah yang dimaksudkan untuk berjalan sekali atau hanya bangun sesekali dan menjalankan jalannya. Pekerjaan berkala seperti pembaruan sertifikat TLS dengan agen seperti Certbot adalah contoh klasik dari pekerjaan yang berjalan di server tradisional traditional. Ini dilakukan dengan menggunakan utilitas Cron di sistem Unix.

Kubernetes memiliki cara analog menjalankan proses satu kali Pekerjaan dan proses periodik seperti pekerjaan cron.

Kami akan mulai dengan contoh khas tentang apa itu Jobs dan mendemonstrasikan contoh standar dari Dokumen resmi. Dari contoh ini akan mudah untuk memahami apa artinya menjalankan Pekerjaan dengan sukses dalam konteks Kubernetes.

Untuk mengikuti, saya akan merekomendasikan Anda untuk menggunakan Kataconda Playground for Kubernetes yang akan menyediakan cluster Kubernetes yang tidak biasa tanpa Anda harus mengonfigurasinya secara manual atau mempertaruhkan cluster produksi untuk eksperimen.

Pekerjaan Kubernetes

Pekerjaan adalah abstraksi Kubernetes tingkat tinggi, mirip dengan ReplicaSets dan Deployment. Namun tidak seperti pod yang dikelola oleh penerapan dan ReplicaSet, pod yang menjalankan Pekerjaan menyelesaikan pekerjaannya dan keluar.

Ketika jumlah pod yang ditentukan mencapai selesai, Pekerjaan dikatakan telah berhasil diselesaikan. Apa kriteria yang menentukan penghentian pod yang berhasil adalah sesuatu yang akan kita definisikan di file YAML Job. Kemudian pengontrol Pekerjaan akan memastikan bahwa sejumlah pod telah berhasil dihentikan dan Pekerjaan dikatakan selesai.

Mari kita buat pekerjaan yang mencetak digit pi hingga 2000 tempat di lognya yang akan kita periksa. Buat file dan beri nama pekerjaan saya.yaml dan simpan konten berikut di dalamnya;

apiVersi: batch/v1
jenis: Pekerjaan
metadata:
nama: pi
spesifikasi:
pola:
spesifikasi:
wadah:
- nama: pi
gambar: perl
perintah: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Tidak pernah
batas mundur: 4

Buat pekerjaan, menggunakan file ini:

$ kubectl buat -f ./pekerjaan.yaml

Anda akan melihat bahwa pekerjaan membutuhkan beberapa detik hingga beberapa menit untuk dijalankan dan setelah selesai. Saat Anda mencoba membuat daftar semua pod menggunakan:

$ kubectl dapatkan pod
NAMA       SIAP     STATUS      MULAI ULANG   USIA
pi-wg6zp   0/1       Selesai   0         50-an

Anda akan melihat bahwa Status pod terkait pi adalah Lengkap tidak berjalan atau dihentikan.Anda juga dapat menyalin nama pod sehingga kami dapat memverifikasi bahwa pi memang telah dihitung hingga 2000 digit. Nama spesifik pod mungkin berbeda dalam kasus Anda.

$ kubectl log pi-wg6zp

Yang cukup menarik, podnya tidak Dihentikan masih sangat aktif, hanya saja tidak ada aplikasi yang berjalan di dalamnya. Mirip dengan hanya menyalakan komputer Anda dan tidak menggunakannya. Jika pod dihentikan, kami tidak akan bisa menarik log darinya, sejak awal.

Untuk membersihkan job dan semua pod yang telah dibuat, jalankan perintah:

$ kubectl delete -f my-jobs.yaml

Anda dapat mempelajari lebih lanjut tentang spesifikasi Pekerjaan dan cara menulis spesifikasi Anda di dokumentasi resmi.

Pekerjaan Cron

Cron Jobs mirip dengan utilitas Cron di Unix yang berjalan secara berkala sesuai jadwal yang kita inginkan. Ini bukan hal yang superstabil di Kubernetes, pada saat penulisan ini, jadi Anda mungkin ingin berhati-hati menggunakan. Mengutip dokumen resmi:

“Tugas cron menciptakan objek pekerjaan tentang sekali per waktu pelaksanaan dari jadwalnya. Kami mengatakan "tentang" karena ada keadaan tertentu di mana dua pekerjaan mungkin dibuat, atau tidak ada pekerjaan yang mungkin dibuat. Kami berusaha membuat ini langka, tetapi tidak sepenuhnya mencegahnya. Oleh karena itu, pekerjaan harus idempoten

Istilah idempoten berarti bahwa Cron Job apakah dilakukan sekali atau dua kali atau beberapa kali akan memiliki efek yang sama pada sistem. Memeriksa pembaruan, memantau operasi semacam itu dapat dianggap idempoten. Tetapi memodifikasi data, atau menulis ke database tidak termasuk di antaranya.

Mari kita menulis pekerjaan cron yang akan menulis "Halo, Dunia"!” pesan di lognya bersama dengan stempel waktu kapan pesan itu ditulis. Buat file bernama my-cronjob.yaml dan untuk itu tulis konten berikut:

apiVersi: batch/v1beta1
jenis: CronJob
metadata:
nama: my-cronjob
spesifikasi:
Jadwal 1 * * * *"
pekerjaanTemplat:
spesifikasi:
pola:
spesifikasi:
wadah:
- nama: halo
gambar: busybox
argumen:
- /bin/sh
- -c
- tanggal; echo Halo dari kluster Kubernetes
restartPolicy: OnFailure

Bagian jadwal pekerjaan adalah yang paling penting crucial. Ini mengikuti konvensi Cron standar, ada daftar angka yang dipisahkan oleh spasi. Lima angka mewakili,

  1. Menit (0-59)
  2. Jam (0-23)
  3. Hari dalam Bulan (1-31)
  4. Bulan (1-12)
  5. Hari dalam seminggu (0-6) mulai dari hari Minggu

Menggunakan tanda bintang (*) untuk bidang berarti nilai apa pun yang tersedia dari bidang itu (seperti wildcard) dan entri pertama dalam jadwal kami “*/1 * * * *” menunjukkan bahwa pekerjaan harus dijalankan setiap menit terlepas dari jam, hari, atau bulan tahun. Menggunakan */5 akan mencetak pesan setiap 5 menit.

Anda dapat mempelajari lebih lanjut tentang spesifikasi cronjob yaml di dokumen resmi. Mari kita lihat semua pod yang menjalankan pekerjaan, yang kami beri nama my-cronjob.

$ kubectl dapatkan pod
NAMA                   SIAP     STATUS      MULAI ULANG   USIA
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         57 detik

Menggali log masing-masing pod akan mengungkapkan satu pesan dengan stempel waktu, karena semuanya dibuat pada waktu yang berbeda, mereka semua akan memiliki stempel waktu yang berbeda.

$ kubectl log my-cronjob-1534457100-hfhzf

Untuk menghapus cronjob cukup jalankan:

$ kubectl delete -f my-cronjob.yaml

Ini juga akan menghapus semua pod yang dibuat dalam proses yang seharusnya.

Referensi

Anda dapat mempelajari lebih lanjut tentang Pekerjaan Kubernetes di sini dan untuk pekerjaan Cron Anda dapat mengunjungi bagian ini dari dokumentasi mereka yang terstruktur dengan baik.

Tiru klik Mouse dengan mengarahkan mouse menggunakan Clickless Mouse di Windows 10
Menggunakan mouse atau keyboard dalam posisi yang salah dari penggunaan yang berlebihan dapat menyebabkan banyak masalah kesehatan, termasuk keteganga...
Tambahkan gerakan Mouse ke Windows 10 menggunakan alat gratis ini
Dalam beberapa tahun terakhir, komputer dan sistem operasi telah berkembang pesat. Ada saat ketika pengguna harus menggunakan perintah untuk menavigas...
Kontrol & kelola gerakan mouse di antara beberapa monitor di Windows 10
Manajer Mouse Tampilan Ganda memungkinkan Anda mengontrol & mengonfigurasi gerakan mouse di antara beberapa monitor, dengan memperlambat gerakannya di...