Halaman ini memberikan gambaran umum tentang taint dan toleransi di Google Distributed Cloud. Saat Anda menjadwalkan beban kerja yang di-deploy di cluster, taint node membantu Anda mengontrol node mana diizinkan berjalan.
Ringkasan
Saat Anda mengirimkan beban kerja untuk dijalankan di cluster, penjadwal menentukan lokasi penempatan Pod yang terkait dengan workload. Penjadwal dapat menempatkan Pod di node mana pun yang sesuai dengan CPU, memori, dan persyaratan resource kustom.
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. |
Keuntungan menyetel taint node di Google Distributed Cloud
Meskipun Anda dapat menyetel taint node menggunakan
kubectl taint
perintah ini, menggunakan gkectl
atau Konsol Google Cloud untuk menyetel taint node memiliki
keunggulan berikut dibandingkan kubectl
:
- Taint dipertahankan saat node dimulai ulang atau diganti.
- Taint dibuat secara otomatis saat node ditambahkan ke kumpulan node.
- Saat menggunakan
gkectl
untuk menambahkan taint, taint akan otomatis dibuat selama penskalaan otomatis cluster. (Penskalaan otomatis untuk kumpulan node yang dibuat di Konsol Google Cloud saat ini tidak tersedia.)
Menyetel taint node
Anda dapat menetapkan taint node pada kumpulan node baik saat membuat cluster pengguna setelah cluster dibuat. Bagian ini menunjukkan penambahan taint ke cluster yang dibuat, tetapi prosesnya serupa saat membuat klaster.
Anda bisa menambahkan kumpulan node baru dan mengatur taint, atau Anda bisa memperbarui kumpulan node yang ada dan menyetel taint. Sebelum Anda menambahkan kumpulan node lainnya, memverifikasi bahwa tersedia cukup alamat IP pada cluster.
Jika membuat cluster di Konsol Google Cloud, Anda dapat menggunakan Konsol Google Cloud untuk menambahkan atau memperbarui node pool.
Menetapkan taint di kumpulan node baru
Konsol
Di konsol, buka Ringkasan cluster Google Kubernetes Engine kami.
Pilih project Google Cloud tempat cluster pengguna berada.
Dalam daftar cluster, klik nama cluster, lalu klik Lihat detail di panel Detail.
Klik
Add node pool.Konfigurasi kumpulan node:
- Masukkan Nama kumpulan node.
- Masukkan jumlah vCPUs untuk setiap node dalam kumpulan (minimum 4 per pekerja cluster pengguna).
- Masukkan ukuran memory dalam mebibyte (MiB) untuk setiap node dalam kumpulan (minimal 8.192 MiB per node pekerja 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 gibibyte (GiB) (defaultnya adalah 40 GiB).
Di bagian Metadata kumpulan node (opsional), klik + Tambahkan Taint. Masukkan Key, Value, dan Effect untuk taint. Ulangi sebagai diperlukan.
Anda juga dapat mengklik + Add Kubernetes Labels. Masukkan Key dan Nilai untuk label. Ulangi jika perlu.
Klik Create.
Konsol Google Cloud menampilkan Status cluster: perubahan di progresnya. Klik Show Details untuk melihat Resource status kondisi dan Pesan status.
Command line
Di file konfigurasi cluster pengguna, isi
nodePools
bagian.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 {i>default <i}yang digunakan.Isi
nodePools[i].taints
bagian. 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 {i>kubeconfig<i} untuk cluster admin Anda.[USER_CLUSTER_CONFIG]
dengan jalur cluster pengguna Anda file konfigurasi Anda.
Menetapkan taint dalam kumpulan node yang ada
Konsol
Di konsol, buka Ringkasan cluster Google Kubernetes Engine kami.
Pilih project Google Cloud tempat cluster pengguna berada.
Dalam daftar cluster, klik nama cluster, lalu klik Lihat detail di panel Detail.
Klik tab Nodes.
Klik nama node pool yang ingin diubah.
Klik
Edit di samping Bagian Metadata kumpulan node (opsional), lalu klik + Tambahkan Taint. Masukkan Key, Value, dan Effect untuk taint. Ulangi sebagai diperlukan.Klik Done.
Klik
untuk kembali ke halaman sebelumnya.Konsol Google Cloud menampilkan Status cluster: perubahan di progresnya. Klik Show Details untuk melihat Resource status kondisi dan Pesan status.
Command line
Di file konfigurasi cluster pengguna, pergi ke
nodePools
dari kumpulan node yang ingin Anda update.Isilah
nodePools[i].taints
Contoh: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 {i>kubeconfig<i} untuk cluster admin Anda.[USER_CLUSTER_CONFIG]
dengan jalur cluster pengguna Anda file konfigurasi 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.