Halaman ini menjelaskan cara kerja node pool di Google Kubernetes Engine (GKE). Node pool adalah sekelompok node dalam cluster yang semuanya memiliki konfigurasi yang sama. Dalam mode GKE Standard, Anda dapat memilih dari sejumlah opsi untuk node pool guna memenuhi kebutuhan workload Anda. Jika memilih untuk menggunakan Autopilot, Anda tidak perlu mengonfigurasi node pool: GKE akan mengelola node untuk Anda.
Untuk mempelajari lebih lanjut cara membuat cluster mode Standard, lihat Membuat cluster regional dan Membuat cluster zona. Untuk mempelajari cara mengelola node pool di cluster Standar yang ada, lihat Menambahkan dan mengelola node pool.
Ringkasan
Node pool adalah sekelompok node dalam cluster yang semuanya memiliki konfigurasi yang sama. Node pool menggunakan spesifikasi NodeConfig. Setiap node dalam kumpulan memiliki label node Kubernetes, cloud.google.com/gke-nodepool
, yang memiliki nama node pool sebagai nilainya.
Saat Anda membuat cluster mode Standar, jumlah node dan jenis node yang Anda tentukan digunakan untuk membuat node pool pertama dari cluster tersebut.
Secara default, node pool pertama ini (dikenal sebagai node pool default) terdiri dari
tiga node di setiap zona komputasi cluster, dengan image node default cos_containerd
, dan jenis mesin serbaguna. Anda dapat menentukan berbagai properti untuk node pool, bergantung pada persyaratan workload Anda. Misalnya, Anda dapat membuat node pool di cluster dengan SSD lokal, platform CPU minimum, Spot VM, image node yang berbeda, jenis mesin yang berbeda, atau antarmuka jaringan virtual yang lebih efisien.
Kemudian, Anda dapat menambahkan node pool tambahan dengan berbagai ukuran dan jenis ke cluster Anda. Semua node dalam node pool tertentu identik satu sama lain.
Node pool kustom berguna saat Anda perlu menjadwalkan Pod yang memerlukan lebih banyak resource daripada yang lain, seperti lebih banyak memori atau lebih banyak ruang disk lokal. Jika memerlukan kontrol lebih besar terkait lokasi Pod yang dijadwalkan, Anda dapat menggunakan taint node.
Anda dapat membuat, mengupgrade, dan menghapus node pool satu per satu tanpa memengaruhi seluruh cluster. Anda tidak dapat mengonfigurasi satu node dalam node pool; setiap perubahan konfigurasi memengaruhi semua node dalam node pool.
Anda dapat mengubah ukuran node pool dalam cluster dengan menambahkan atau menghapus node.
Secara default, semua node pool baru menjalankan versi Kubernetes yang sama dengan bidang kontrol. Node pool yang ada dapat diupgrade secara manual atau diupgrade secara otomatis. Anda juga dapat menjalankan beberapa versi node Kubernetes pada setiap node pool dalam cluster, mengupdate setiap node pool secara independen, dan menarget node pool yang berbeda untuk deployment tertentu.
Men-deploy Service ke node pool tertentu
Saat menentukan Service, Anda dapat secara tidak langsung mengontrol node pool tempat layanan tersebut di-deploy. Node pool tidak bergantung pada konfigurasi Service, tetapi pada konfigurasi Pod.
Anda dapat secara eksplisit men-deploy Pod ke node pool tertentu dengan menetapkan
nodeSelector
dalam manifes Pod. Hal ini memaksa Pod untuk hanya berjalan pada node dalam node pool tersebut. Sebagai contoh, lihat Men-deploy Pod ke node pool tertentu.Anda dapat menentukan permintaan resource untuk container. Pod hanya berjalan di node yang memenuhi permintaan resource. Misalnya, jika definisi Pod menyertakan penampung yang memerlukan empat CPU, Layanan tidak akan memilih Pod yang berjalan di node dengan dua CPU.
Node di cluster multi-zona atau regional
Jika Anda membuat cluster multi-zona atau regional, semua node pool akan direplikasi ke zona tersebut secara otomatis. Setiap node pool baru akan otomatis dibuat di zona tersebut. Demikian pula, penghapusan apa pun juga akan menghapus kumpulan node tersebut dari zona tambahan.
Perlu diperhatikan bahwa karena efek multiplikatif ini, kuota project Anda untuk region tertentu mungkin akan habis saat membuat node pool.
Menghapus node pool
Saat Anda menghapus node
pool, GKE akan menghabiskan semua node di node pool, menghapus dan
menjadwalkan ulang semua Pod. Proses penghentian ini melibatkan GKE yang menghapus Pod pada setiap node di node pool. Setiap node dalam node pool dikosongkan dengan menghapus Pod dengan periode penghentian tuntas MAX_POD
yang dialokasikan.
MAX_POD
adalah terminationGracePeriodSeconds
maksimum yang ditetapkan pada Pod yang dijadwalkan pada node, dengan batas waktu satu jam.
Setelan PodDisruptionBudget
tidak diterapkan selama penghapusan node pool.
Jika Pod memiliki pemilih node tertentu, Pod mungkin tetap berada dalam kondisi yang tidak dapat dijadwalkan jika tidak ada node lain dalam cluster yang memenuhi kriteria.
Saat cluster dihapus, GKE tidak mengikuti proses penghentian node secara halus dengan menghabiskannya. Jika beban kerja yang berjalan di cluster harus dihentikan dengan baik, gunakan kubectl
drain
untuk membersihkan beban kerja sebelum Anda menghapus cluster.
Untuk menghapus node pool, lihat Menghapus node pool.