Halaman ini menyediakan ringkasan taint dan toleransi pada GKE di VMware. Saat Anda menjadwalkan workload untuk di-deploy di cluster, taint node membantu Anda mengontrol node mana yang diizinkan untuk dijalankan.
Ringkasan
Saat Anda mengirimkan beban kerja untuk dijalankan di cluster, scheduler menentukan tempat untuk menempatkan Pod yang terkait dengan beban kerja tersebut. Penjadwal bebas menempatkan Pod pada node mana pun yang memenuhi persyaratan CPU, memori, dan resource kustom Pod.
Jika cluster menjalankan berbagai workload, Anda mungkin ingin menerapkan beberapa kontrol atas workload mana yang dapat berjalan pada node pool tertentu.
Taint node memungkinkan Anda menandai node sehingga scheduler menghindari atau mencegah penggunaannya untuk Pod tertentu. Fitur pelengkap, tolerasi, memungkinkan Anda menetapkan Pod yang dapat digunakan pada node "taint".
Taint dan toleransi bekerja bersama untuk memastikan bahwa Pod tidak dijadwalkan ke node yang tidak sesuai.
Taint adalah pasangan nilai kunci yang terkait dengan efek. Tabel berikut mencantumkan efek yang tersedia:
Efek | Deskripsi |
---|---|
NoSchedule |
Pod yang tidak menoleransi taint ini tidak akan dijadwalkan pada node; Pod yang sudah ada tidak dikeluarkan dari node. |
PreferNoSchedule |
Kubernetes menghindari penjadwalan Pod yang tidak menoleransi taint ini ke node. |
NoExecute |
Pod dikeluarkan dari node jika sudah berjalan di node, dan tidak dijadwalkan ke node jika belum berjalan di node. |
Manfaat menyetel taint node di GKE di VMware
Meskipun Anda dapat menetapkan taint node menggunakan perintah kubectl taint
, penggunaan gkectl
atau konsol Google Cloud untuk menetapkan taint node memiliki keunggulan berikut dibandingkan kubectl
:
- Taint dipertahankan saat node dimulai ulang atau diganti.
- Taint dibuat secara otomatis saat sebuah node ditambahkan ke kumpulan node.
- Saat menggunakan
gkectl
untuk menambahkan taint, taint akan otomatis dibuat selama penskalaan otomatis cluster. (Penskalaan otomatis untuk nodepool yang dibuat di Konsol Google Cloud saat ini tidak tersedia.)
Menetapkan taint node
Anda dapat menetapkan taint node dalam kumpulan node saat membuat cluster pengguna atau setelah cluster dibuat. Bagian ini menunjukkan penambahan taint ke cluster yang telah dibuat, tetapi prosesnya akan serupa saat membuat cluster baru.
Anda dapat menambahkan kumpulan node baru dan menetapkan taint, atau Anda dapat memperbarui kumpulan node yang ada dan menetapkan taint. Sebelum Anda menambahkan kumpulan node lain, pastikan tersedia cukup alamat IP di cluster.
Jika membuat cluster di konsol Google Cloud, Anda dapat menggunakan konsol Google Cloud untuk menambahkan atau memperbarui kumpulan node.
Menetapkan taint di kumpulan node baru
Konsol
Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.
Pilih project Google Cloud tempat cluster pengguna berada.
Di daftar cluster, klik nama cluster, lalu klik View details di panel Details.
Klik
Add node pool.Konfigurasikan kumpulan node:
- Masukkan Nama kumpulan node.
- Masukkan jumlah vCPUs untuk setiap node dalam kumpulan (minimal 4 per pekerja cluster pengguna).
- Masukkan ukuran memori dalam mebibyte (MiB) untuk setiap node dalam kumpulan (minimum 8.192 MiB per node worker cluster pengguna dan harus kelipatan 4).
- Di kolom Replicas, masukkan jumlah node dalam kumpulan (minimal 3).
Pilih OS image type: Ubuntu Containerd atau COS.
Masukkan Ukuran boot disk dalam gigabyte (GiB) (default-nya adalah 40 GiB).
Di bagian Node pool metadata (opsional), klik + Add Taint. Masukkan Key, Value, dan Effect untuk taint. Ulangi jika perlu.
Secara opsional, klik + Add Kubernetes Labels. Masukkan Key dan Value untuk label. Ulangi jika perlu.
Klik Create.
Konsol Google Cloud akan menampilkan Cluster status: changes in progress. Klik Show Details untuk melihat Resource status condition dan Status messages.
Command line
Dalam file konfigurasi cluster pengguna, isi bagian
nodePools
.Anda harus menentukan kolom berikut:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Kolom berikut bersifat opsional. Jika Anda tidak menyertakan
nodePools[i].bootDiskSizeGB
ataunodePools[i].osImageType
, nilai default akan digunakan.Isi bagian
nodePools[i].taints
. Contoh:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
(Opsional) Isi bagian berikut:
nodePools[i].labels
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Jalankan perintah berikut:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ganti kode berikut:
[ADMIN_CLUSTER_KUBECONFIG]
dengan jalur file kubeconfig untuk cluster admin Anda.[USER_CLUSTER_CONFIG]
dengan jalur file konfigurasi cluster pengguna Anda.
Menetapkan taint di kumpulan node yang ada
Konsol
Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.
Pilih project Google Cloud tempat cluster pengguna berada.
Di daftar cluster, klik nama cluster, lalu klik View details di panel Details.
Klik tab Nodes.
Klik nama node pool yang ingin diubah.
Klik
Edit di samping bagian Node pool metadata (optional), lalu klik + Add Taint. Masukkan Key, Value, dan Effect untuk taint. Ulangi jika perlu.Klik Done.
Klik
untuk kembali ke halaman sebelumnya.Konsol Google Cloud akan menampilkan Cluster status: changes in progress. Klik Show Details untuk melihat Resource status condition dan Status messages.
Command line
Di file konfigurasi cluster pengguna, buka bagian
nodePools
kumpulan node yang ingin diupdate.Isi kolom
nodePools[i].taints
Misalnya:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
Jalankan perintah berikut:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ganti kode berikut:
[ADMIN_CLUSTER_KUBECONFIG]
dengan jalur file kubeconfig untuk cluster admin Anda.[USER_CLUSTER_CONFIG]
dengan jalur file konfigurasi cluster pengguna Anda.
Mengonfigurasi Pod untuk menoleransi taint
Anda dapat mengonfigurasi Pod untuk menoleransi taint dengan menyertakan kolom tolerations
dalam spesifikasi Pod. Pada contoh berikut, Pod dapat dijadwalkan
pada node yang memiliki taint dedicated=experimental:NoSchedule
:
tolerations:
- key: dedicated
operator: Equal
value: experimental
effect: NoSchedule
Untuk contoh tambahan, lihat Taint dan Toleransi.