Tentang node pool


Halaman ini menjelaskan cara kerja node pool di Google Kubernetes Engine (GKE).

Untuk mempelajari cara mengelola node pool, 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, jumlah node dan jenis node yang Anda tentukan digunakan untuk membuat node pool pertama dari cluster tersebut. Kemudian, Anda dapat memberikan node pool tambahan dengan berbagai ukuran dan jenis ke cluster Anda. Semua node dalam node pool tertentu identik satu sama lain.

Misalnya, Anda dapat membuat node pool di cluster dengan SSD lokal, platform CPU minimum, Spot VM, image node, jenis mesin yang berbeda, atau antarmuka jaringan virtual yang lebih efisien.

Kumpulan node kustom berguna saat Anda perlu menjadwalkan Pod yang memerlukan lebih banyak resource daripada yang lain, misalnya lebih banyak memori atau kapasitas 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 pada node pool; setiap perubahan konfigurasi memengaruhi semua node di 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 penampung. Pod hanya berjalan pada node yang memenuhi permintaan resource. Misalnya, jika definisi Pod menyertakan container 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 kumpulan node akan direplikasi ke zona tersebut secara otomatis. Setiap kumpulan node baru akan otomatis dibuat di zona tersebut. Demikian pula, setiap penghapusan 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 kumpulan node, GKE akan menghabiskan semua node dalam kumpulan node, sehingga menghapus dan menjadwalkan ulang semua Pod. Proses penghentian ini melibatkan penghapusan GKE Pod pada setiap node di kumpulan node. Setiap node dalam kumpulan node dikosongkan dengan menghapus Pod dengan periode penghentian tuntas MAX_POD. MAX_POD adalah terminationGracePeriodSeconds maksimum yang ditetapkan pada Pod yang dijadwalkan pada node, dengan batas 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.

Jika cluster dihapus, GKE tidak mengikuti proses penghentian node secara halus dengan menghabiskannya. Jika workload yang berjalan di cluster harus dihentikan dengan lancar, gunakan kubectl drain untuk membersihkan beban kerja sebelum Anda menghapus cluster.

Untuk menghapus kumpulan node, lihat Menghapus kumpulan node.

Langkah selanjutnya