Prioritas dan Preemption Pod
Pelajari cara PriorityClasses menentukan peringkat Pod dan cara penjadwal dapat melakukan preemption terhadap Pod berprioritas lebih rendah untuk menyediakan ruang bagi beban kerja kritis.
Prioritas dan Preemption Pod adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Tidak Semua Pod Setara
Saat klaster penuh, beberapa beban kerja lebih penting daripada yang lain. Prioritas Pod memungkinkan Anda memberi tahu Kubernetes Pod mana yang harus memenangkan persaingan mendapatkan sumber daya.
Apa Itu PriorityClass
PriorityClass adalah objek yang berlaku di seluruh klaster dan memetakan sebuah nama ke nilai bilangan bulat. Angka yang lebih tinggi berarti prioritas yang lebih tinggi.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: 'For critical production workloads'Menetapkan Prioritas pada Pod
Pod memilih suatu kelas dengan priorityClassName. Penjadwal membaca nilai numerik dari kelas yang dirujuk.
apiVersion: v1
kind: Pod
metadata:
name: critical-app
spec:
priorityClassName: high-priority
containers:
- name: app
image: myapp:1.0Pengaruh Prioritas terhadap Penjadwalan
Saat beberapa Pod masih menunggu, penjadwal mencoba menempatkan Pod dengan prioritas lebih tinggi terlebih dahulu. Prioritas memengaruhi urutan penjadwalan Pod.
Apa Itu Preempsi
Jika Pod berprioritas tinggi tidak dapat dijadwalkan karena klaster penuh, penjadwal dapat melakukan preempsi (mengeluarkan) Pod berprioritas lebih rendah untuk menyediakan ruang.
Pod yang dikeluarkan kembali ke status menunggu dan mungkin dijadwalkan ulang di tempat lain.
Preempsi dalam Praktik
Bayangkan sebuah node penuh dengan Pod berprioritas 100, lalu Pod berprioritas 1000000 tiba. Penjadwal dapat mengeluarkan cukup banyak Pod berprioritas rendah agar Pod kritis tersebut dapat ditempatkan.
kubectl get events --field-selector reason=Preempted
# Pod default/batch-job was preempted by critical-appMenonaktifkan Preempsi
PriorityClass dapat memilih untuk tidak melakukan preempsi terhadap Pod lain dengan preemptionPolicy: Never. Pod semacam ini tetap dijadwalkan berdasarkan urutan prioritas, tetapi tidak akan mengeluarkan Pod mana pun.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-no-preempt
value: 1000000
preemptionPolicy: NeverNilai Bawaan Global
Menetapkan globalDefault: true pada PriorityClass akan menerapkan nilainya ke Pod mana pun yang tidak menentukan kelas. Hanya satu kelas yang dapat menjadi nilai bawaan global.
Kelas Sistem Bawaan
Kubernetes menyediakan kelas khusus seperti system-cluster-critical dan system-node-critical untuk komponen penting. Jangan gunakan kembali kelas ini untuk aplikasi Anda.
kubectl get priorityclass
# system-node-critical 2000001000
# system-cluster-critical 2000000000Praktik Terbaik
- Tentukan beberapa tingkatan yang jelas, misalnya kritis, normal, dan massal
- Simpan preempsi untuk beban kerja yang benar-benar penting
- Gabungkan dengan permintaan sumber daya agar keputusan penjadwalan akurat
- Hindari menjadikan semuanya berprioritas tinggi karena hal itu menghilangkan manfaatnya
Prioritas vs QoS
Prioritas mengendalikan penjadwalan dan preempsi. Kelas Kualitas Layanan (dari permintaan dan batas sumber daya) mengendalikan pengeluaran saat node mengalami tekanan. Keduanya berkaitan, tetapi merupakan mekanisme yang berbeda.
Pemeriksaan Singkat
Uji pemahaman Anda tentang preempsi.
Ringkasan
Anda telah mempelajari bahwa PriorityClass mengurutkan Pod berdasarkan nilai bilangan bulat dan memengaruhi urutan penjadwalan. Preempsi memungkinkan Pod kritis mengeluarkan Pod berprioritas lebih rendah saat klaster penuh. Gunakan beberapa tingkatan yang jelas dan gabungkan prioritas dengan permintaan sumber daya yang akurat.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Prioritas dan Preemption Pod” gratis?
Ya — teks lengkap “Prioritas dan Preemption Pod” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Prioritas dan Preemption Pod”?
Pelajari cara PriorityClasses menentukan peringkat Pod dan cara penjadwal dapat melakukan preemption terhadap Pod berprioritas lebih rendah untuk menyediakan ruang bagi beban kerja kritis. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?
Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Prioritas dan Preemption Pod” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?
Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Permintaan dan Batas Sumber Daya
- Pemilih Node dan Afinitas
- Taint dan Toleration
- Prioritas dan Preemption Pod