Taint dan Toleration
Cegah Pod dijadwalkan pada node tertentu menggunakan taint dan izinkan Pod tertentu menoleransinya.
Taint dan Toleration adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 3 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.
Apa Itu Taint?
Bayangkan Anda memiliki node khusus dalam klaster Kubernetes, mungkin dengan perangkat keras tertentu seperti GPU, atau yang dicadangkan untuk beban kerja tertentu. Anda tentu tidak ingin sembarang Pod ditempatkan di sana, bukan?
Di sinilah taint berperan! Taint adalah properti yang diterapkan pada sebuah node untuk mencegah Pod dijadwalkan di sana, kecuali Pod tersebut secara eksplisit "menoleransi" taint itu.
Alasan Menggunakan Taint
Taint sangat berguna untuk mengelola tempat Pod berjalan:
- Node Khusus: Mencadangkan node untuk tim atau aplikasi tertentu.
- Perangkat Keras Khusus: Mengisolasi node dengan GPU atau SSD berperforma tinggi untuk Pod yang membutuhkannya.
- Pemeliharaan: Menandai node untuk pemeliharaan sehingga Pod baru untuk sementara tidak dijadwalkan di sana.
Cara Kerja Taint
Anggaplah taint sebagai tanda "dilarang masuk" pada sebuah node. Pod hanya dapat mengabaikan tanda ini jika memiliki "izin" yang sesuai, yang disebut toleransi.
Taint terdiri dari kunci, nilai, dan efek. Contohnya: key=value:effect.
Memahami Efek Taint
Bagian "efek" dari taint memberi tahu Kubernetes tindakan yang harus dilakukan terhadap Pod yang tidak menoleransinya. Ada tiga efek utama:
NoSchedulePreferNoScheduleNoExecute
Mari kita lihat satu per satu.
Efek Taint: NoSchedule
Efek NoSchedule adalah yang paling ketat. Jika sebuah node memiliki taint dengan NoSchedule, tidak ada Pod yang akan dijadwalkan pada node tersebut kecuali memiliki toleransi yang sesuai.
Pod yang sudah berjalan pada node tidak terpengaruh oleh taint NoSchedule yang baru.
Efek Taint: PreferNoSchedule
PreferNoSchedule adalah versi "lunak" dari NoSchedule. Kubernetes akan berusaha sebaik mungkin untuk menghindari penjadwalan Pod pada node yang memiliki taint, tetapi ini bukan persyaratan wajib.
Jika tidak ada node lain yang sesuai, Pod tetap dapat dijadwalkan pada node bertaint PreferNoSchedule, bahkan tanpa toleransi.
Efek Taint: NoExecute
Efek NoExecute bersifat unik karena memengaruhi Pod yang *sudah berjalan*. Jika sebuah node memiliki taint NoExecute:
- Pod tanpa toleransi yang sesuai akan *segera dikeluarkan*.
- Pod baru tanpa toleransi yang sesuai tidak dapat dijadwalkan.
Efek ini sering digunakan untuk mengosongkan node atau menangani kegagalan node.
Memperkenalkan Toleransi
Taint diterapkan pada node, sedangkan toleransi diterapkan pada Pod. Toleransi pada sebuah Pod memungkinkan Pod tersebut dijadwalkan pada node yang memiliki taint yang sesuai.
Tanpa toleransi yang sesuai, Pod tidak dapat, atau memilih untuk tidak, dijadwalkan pada node bertaint.
Toleransi dalam Manifes Pod
Anda menentukan toleransi dalam manifes YAML Pod, di bagian spec. Berikut cara sebuah Pod menoleransi taint dengan key=value:NoSchedule:
apiVersion: v1
kind: Pod
metadata:
name: my-tolerated-pod
spec:
containers:
- name: nginx
image: nginx
tolerations:
- key: "special-purpose"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"Cara Taint & Toleransi Dicocokkan
Agar Pod dapat dijadwalkan pada node bertaint, toleransinya harus cocok dengan taint node tersebut. Pencocokan ini melibatkan:
- Kunci: Harus sama.
- Nilai: Harus sama jika
operator: Equal. - Efek: Harus sama.
- Operator: Dapat berupa
EqualatauExists(artinya nilai apa pun untuk kunci tersebut).
Toleransi khusus key: "" operator: Exists menoleransi taint apa pun.
Pemeriksaan Cepat: Taint
Sebuah node memiliki taint env=production:NoSchedule. Konfigurasi Pod mana yang memungkinkan Pod tersebut dijadwalkan pada node ini?
Ringkasan: Taint & Toleransi
Anda telah mempelajari taint dan toleransi!
- Taint diterapkan pada node untuk menjauhkan Pod.
- Toleransi diterapkan pada Pod agar Pod dapat dijadwalkan pada node bertaint.
- Efek taint utama adalah
NoSchedule,PreferNoSchedule, danNoExecute. - Toleransi harus cocok dengan kunci, nilai, dan efek taint agar Pod dapat dijadwalkan.
Alat-alat ini memberi Anda kontrol yang terperinci atas penempatan Pod!
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Taint dan Toleration” gratis?
Ya — teks lengkap “Taint dan Toleration” 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 “Taint dan Toleration”?
Cegah Pod dijadwalkan pada node tertentu menggunakan taint dan izinkan Pod tertentu menoleransinya. 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 3 dari 4.
Berapa lama pelajaran “Taint dan Toleration” 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