Halaman ini menunjukkan cara menambahkan dan menjalankan operasi pada node pool yang menjalankan clusters Google Kubernetes Engine (GKE) Standard. Untuk mempelajari cara kerja node pool, lihat Tentang node pool.
Cluster dapat melakukan operasi, seperti penyediaan otomatis node, di beberapa node pool secara paralel. Anda dapat membuat, memperbarui, atau menghapus node pool secara manual saat node pool lain sedang dibuat, diperbarui, atau dihapus.
Petunjuk ini tidak berlaku untuk cluster Autopilot, tempat GKE mengelola node, dan tidak ada node pool yang dapat Anda kelola. Untuk mempelajari lebih lanjut, lihat ringkasan Autopilot.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Menyiapkan akun layanan IAM untuk GKE
GKE menggunakan akun layanan IAM yang dilampirkan ke node Anda untuk
menjalankan tugas sistem seperti logging dan pemantauan. Setidaknya, akun layanan node ini
harus memiliki
peran Akun Layanan Node Default Kubernetes Engine
(roles/container.defaultNodeServiceAccount
) di project Anda. Secara default, GKE menggunakan akun layanan default Compute Engine, yang dibuat secara otomatis di project Anda, sebagai akun layanan node.
Untuk memberikan peran roles/container.defaultNodeServiceAccount
ke akun layanan default Compute Engine, selesaikan langkah-langkah berikut:
console
- Buka halaman Sambutan:
- Di kolom Project number, klik Copy to clipboard.
- Buka halaman IAM:
- Klik Berikan akses.
- Di kolom New principals, tentukan nilai berikut:
GantiPROJECT_NUMBER-compute@developer.gserviceaccount.com
PROJECT_NUMBER
dengan nomor project yang Anda salin. - Di menu Select a role, pilih peran Kubernetes Engine Default Node Service Account.
- Klik Simpan.
gcloud
- Temukan nomor project Google Cloud Anda:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Ganti
PROJECT_ID
dengan project ID Anda.Outputnya mirip dengan hal berikut ini:
12345678901
- Berikan peran
roles/container.defaultNodeServiceAccount
ke akun layanan default Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Ganti
PROJECT_NUMBER
dengan nomor project dari langkah sebelumnya.
Menambahkan node pool ke cluster Standard
Anda dapat menambahkan node pool baru ke cluster GKE Standar menggunakan gcloud CLI, Konsol Google Cloud, atau Terraform. GKE juga mendukung penyediaan otomatis node, yang secara otomatis mengelola node pool di cluster Anda berdasarkan persyaratan penskalaan.
Buat dan gunakan akun layanan Identity and Access Management (IAM) dengan hak istimewa minimal untuk node pool Anda, bukan akun layanan default Compute Engine. Untuk mengetahui petunjuk cara membuat akun layanan dengan hak istimewa minimal, lihat Meningkatkan keamanan cluster.
gcloud
Untuk membuat node pool, jalankan perintah gcloud container node-pools create
:
gcloud container node-pools create POOL_NAME \
--cluster CLUSTER_NAME \
--service-account SERVICE_ACCOUNT
Ganti kode berikut:
POOL_NAME
: nama node pool baru.CLUSTER_NAME
: nama cluster yang ada.SERVICE_ACCOUNT
: nama akun layanan IAM yang akan digunakan oleh node Anda.Sebaiknya tentukan akun layanan IAM dengan hak istimewa minimal yang dapat digunakan node Anda, bukan akun layanan default Compute Engine. Untuk mempelajari cara membuat akun layanan dengan hak istimewa minimal, lihat Menggunakan akun layanan dengan hak istimewa terendah.
Untuk menentukan akun layanan kustom di gcloud CLI, tambahkan flag berikut ke perintah Anda:
--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti SERVICE_ACCOUNT_NAME dengan nama akun layanan dengan hak istimewa minimal.
Untuk daftar lengkap flag opsional yang dapat Anda tentukan, lihat dokumentasi gcloud container node-pools create
.
Outputnya mirip dengan hal berikut ini:
Creating node pool POOL_NAME...done.
Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-central1/clusters/CLUSTER_NAME/nodePools/POOL_NAME].
NAME: POOL_NAME
MACHINE_TYPE: e2-medium
DISK_SIZE_GB: 100
NODE_VERSION: 1.21.5-gke.1302
Dalam output ini, Anda akan melihat detail tentang node pool, seperti jenis mesin dan versi GKE yang berjalan di node.
Terkadang, node pool berhasil dibuat, tetapi waktu tunggu perintah gcloud
akan habis, alih-alih melaporkan status dari server. Untuk memeriksa status semua node pool, termasuk yang belum sepenuhnya disediakan, gunakan perintah berikut:
gcloud container node-pools list --cluster CLUSTER_NAME
Konsol
Untuk menambahkan node pool ke cluster Standard yang ada, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di daftar cluster, klik nama cluster Standar yang ingin Anda ubah.
Klik add_box Add node pool.
Konfigurasikan node pool Anda.
Di menu navigasi, klik Security.
- Secara opsional, tentukan akun layanan IAM kustom untuk node Anda:
- Di halaman Setelan lanjutan, luaskan bagian Keamanan.
- Di menu Service account, pilih akun layanan pilihan Anda.
Sebaiknya tentukan akun layanan IAM dengan hak istimewa minimal yang dapat digunakan node Anda, bukan akun layanan default Compute Engine. Untuk mempelajari cara membuat akun layanan dengan hak istimewa minimal, lihat Menggunakan akun layanan dengan hak istimewa terendah.
Klik Create untuk menambahkan node pool.
Terraform
Untuk menambahkan node pool ke cluster Standard yang ada menggunakan Terraform, lihat contoh berikut:
Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.
Melihat node pool di cluster Standard
gcloud
Untuk menampilkan daftar semua node pool cluster Standard, jalankan perintah gcloud container node-pools list
:
gcloud container node-pools list --cluster CLUSTER_NAME
Untuk melihat detail tentang node pool tertentu, jalankan perintah gcloud container node-pools describe
:
gcloud container node-pools describe POOL_NAME \
--cluster CLUSTER_NAME
Ganti kode berikut:
CLUSTER_NAME
: nama cluster.POOL_NAME
: nama node pool yang akan dilihat.
Konsol
Untuk melihat node pool cluster Standard, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di daftar cluster, klik nama cluster Standar.
Klik tab Nodes.
Di bagian Node Pools, klik nama node pool yang ingin Anda lihat.
Menskalakan node pool
Anda dapat menskalakan node pool ke atas atau ke bawah untuk mengoptimalkan performa dan biaya. Dengan node pool GKE Standard, Anda dapat menskalakan node pool secara horizontal dengan mengubah jumlah node dalam node pool, atau menskalakan node pool secara vertikal dengan mengubah konfigurasi atribut mesin node.
Menskalakan secara horizontal dengan mengubah jumlah node
gcloud
Untuk mengubah ukuran node pool cluster, jalankan perintah gcloud container clusters resize
:
gcloud container clusters resize CLUSTER_NAME \
--node-pool POOL_NAME \
--num-nodes NUM_NODES
Ganti kode berikut:
CLUSTER_NAME
: nama cluster yang akan diubah ukurannya.POOL_NAME
: nama node pool yang akan diubah ukurannya.NUM_NODES
: jumlah node dalam kumpulan di cluster zona. Jika Anda menggunakan cluster multi-zona atau regional, NUM_NODES adalah jumlah node untuk setiap zona tempat node pool berada.
Ulangi perintah ini untuk setiap node pool. Jika cluster Anda hanya memiliki satu node pool, hapus flag --node-pool
.
Konsol
Untuk mengubah ukuran node pool cluster, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di daftar cluster, klik nama cluster Standar yang ingin Anda ubah.
Klik tab Nodes.
Di bagian Node Pools, klik nama node pool yang ingin Anda ubah ukurannya.
Klik edit Resize.
Di kolom Node Pools, masukkan jumlah node yang Anda inginkan dalam node pool, lalu klik Resize.
Ulangi untuk setiap node pool sesuai kebutuhan.
Menskalakan secara vertikal dengan mengubah atribut mesin node
Anda dapat mengubah jenis mesin, jenis disk, dan ukuran disk yang dikonfigurasi di node pool.
Saat Anda mengedit satu atau beberapa atribut mesin ini, GKE akan memperbarui node ke konfigurasi baru menggunakan strategi upgrade yang dikonfigurasi untuk node pool. Jika mengonfigurasi strategi upgrade blue-green, Anda dapat memigrasikan workload dari node asli ke node baru sekaligus melakukan roll back node asli jika migrasi gagal. Periksa setelan upgrade node pool untuk memastikan bahwa strategi yang dikonfigurasi adalah cara yang Anda inginkan untuk mengupdate node.
Perbarui minimal salah satu atribut mesin yang ditandai dalam perintah berikut:
gcloud container node-pools update POOL_NAME \
--cluster CLUSTER_NAME \
--machine-type MACHINE_TYPE \
--disk-type DISK_TYPE \
--disk-size DISK_SIZE
Hapus tanda apa pun untuk atribut mesin yang tidak ingin Anda ubah. Namun, Anda harus menggunakan minimal satu flag atribut mesin, karena perintah tersebut akan gagal.
Ganti kode berikut:
POOL_NAME
: nama node pool yang akan diubah ukurannya.CLUSTER_NAME
: nama cluster yang akan diubah ukurannya.MACHINE_TYPE
: jenis mesin yang akan digunakan untuk node. Untuk mempelajari lebih lanjut, lihat gcloud container node-pools update.DISK_TYPE
: jenis disk booting VM node, harus berupa salah satu daripd-standard
,pd-ssd
,pd-balanced
.DISK_SIZE
: ukuran untuk disk booting VM node dalam GB. Setelan defaultnya adalah 100 GB.
Perubahan ini memerlukan pembuatan ulang node, yang dapat menyebabkan gangguan pada workload yang sedang berjalan. Untuk mengetahui detail tentang perubahan spesifik ini, temukan baris yang sesuai dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node tanpa mematuhi kebijakan pemeliharaan. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.
Mengupgrade node pool
Secara default, node cluster telah mengaktifkan upgrade otomatis. Upgrade otomatis node memastikan bahwa versi node dan panel kontrol cluster Anda tetap sinkron dan sesuai dengan kebijakan ketidaksesuaian versi Kubernetes, yang memastikan bahwa panel kontrol kompatibel dengan node hingga dua versi minor yang lebih lama dari panel kontrol. Misalnya, panel kontrol Kubernetes 1.29 kompatibel dengan node Kubernetes 1.27.
Jangan nonaktifkan upgrade otomatis node agar cluster Anda mendapatkan manfaat dari upgrade yang tercantum di paragraf sebelumnya.
Dengan upgrade node pool GKE, Anda dapat memilih antara dua strategi upgrade yang dapat dikonfigurasi, yaitu upgrade lonjakan dan upgrade blue-green.
Pilih strategi dan gunakan parameter untuk mengatur strategi agar sesuai dengan kebutuhan lingkungan cluster Anda.
Cara kerja upgrade node
Saat node sedang diupgrade, GKE berhenti menjadwalkan Pod baru pada node tersebut, dan mencoba menjadwalkan Pod yang berjalan ke node lain. Hal ini serupa dengan peristiwa lain yang membuat ulang node, seperti mengaktifkan atau menonaktifkan fitur pada node pool.
Selama upgrade node otomatis atau manual, PodDisruptionBudget (PDB) dan masa tenggang penghentian Pod dipatuhi selama maksimum 1 jam. Jika Pod yang berjalan di node tidak dapat dijadwalkan ke node baru setelah satu jam, GKE akan tetap memulai upgrade. Perilaku ini berlaku meskipun Anda mengonfigurasi PDB agar selalu
memiliki semua replika yang tersedia dengan menetapkan kolom maxUnavailable
ke
0
atau 0%
atau dengan menetapkan kolom minAvailable
ke 100%
atau ke
jumlah replika. Dalam semua skenario ini, GKE akan menghapus Pod setelah satu jam sehingga penghapusan node dapat terjadi.
Jika workload memerlukan lebih banyak fleksibilitas dengan penghentian yang terkontrol, gunakan upgrade blue-green yang menyediakan setelan waktu perendaman tambahan untuk memperpanjang pemeriksaan PDB melebihi default satu jam.
Untuk mempelajari lebih lanjut hal yang umumnya terjadi selama penghentian node, silakan lihat topik tentang Pod.
Upgrade hanya akan selesai jika semua node telah dibuat ulang dan cluster dalam status yang diinginkan. Saat node yang baru diupgrade didaftarkan dengan panel kontrol, GKE akan menandai node tersebut sebagai dapat dijadwalkan.
Instance node baru menjalankan versi Kubernetes yang diinginkan serta:
Mengupgrade node pool secara manual
Anda dapat mengupgrade versi node pool secara manual agar sesuai dengan versi panel kontrol atau ke versi sebelumnya yang masih tersedia dan kompatibel dengan panel kontrol. Anda dapat mengupgrade beberapa node pool secara paralel secara manual, sedangkan GKE hanya mengupgrade satu node pool secara otomatis dalam satu waktu.
Saat Anda mengupgrade node pool secara manual, GKE akan menghapus label yang Anda tambahkan ke setiap node menggunakan kubectl
.
Untuk menghindari hal ini, terapkan label ke node pool.
Sebelum Anda mengupgrade node pool secara manual, pertimbangkan kondisi berikut:
- Mengupgrade node pool dapat mengganggu workload yang berjalan di node pool tersebut. Untuk menghindari hal ini, Anda dapat membuat node pool baru dengan versi yang diinginkan dan memigrasikan workload. Setelah migrasi, Anda dapat menghapus node pool lama.
- Jika Anda mengupgrade node pool dengan Ingress yang berada dalam status error, grup instance tidak akan disinkronkan. Untuk mengatasi masalah ini, periksa statusnya terlebih dahulu menggunakan perintah
kubectl get ing
. Jika grup instance tidak disinkronkan, Anda dapat mengatasi masalah ini dengan menerapkan kembali manifes yang digunakan untuk membuat ingress.
Anda dapat mengupgrade node pool secara manual ke versi yang kompatibel dengan panel kontrol, menggunakan Konsol Google Cloud atau Google Cloud CLI.
gcloud
Variabel berikut digunakan dalam perintah di bagian ini:
CLUSTER_NAME
: nama cluster node pool yang akan diupgrade.NODE_POOL_NAME
: nama node pool yang akan diupgrade.VERSION
: versi Kubernetes tempat node diupgrade. Misalnya,--cluster-version=1.7.2
ataucluster-version=latest
.
Mengupgrade node pool:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME
Untuk menentukan versi GKE yang berbeda pada node, gunakan flag --cluster-version
yang bersifat opsional:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--cluster-version VERSION
Untuk mengetahui informasi selengkapnya tentang cara menentukan versi, silakan melihat Pembuatan versi.
Untuk informasi selengkapnya, silakan melihat dokumentasi gcloud container clusters upgrade
.
Konsol
Untuk mengupgrade node pool menggunakan Konsol Google Cloud, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di samping cluster yang ingin diedit, klik more_vert Actions, lalu klik edit Edit.
Di halaman Cluster details, klik tab Nodes.
Di bagian Node Pools, klik nama node pool yang ingin Anda upgrade.
Klik edit Edit.
Klik Change di bagian Node version.
Pilih versi yang diinginkan dari menu drop-down Node version, lalu klik Change.
Mungkin perlu waktu beberapa menit untuk mengubah versi node.
Men-deploy Pod ke node pool tertentu
Anda dapat secara eksplisit men-deploy Pod ke node pool tertentu menggunakan nodeSelector
di manifes Pod. nodeSelector
menjadwalkan Pod ke node dengan label yang cocok.
Semua node pool GKE memiliki label dengan format berikut:
cloud.google.com/gke-nodepool: POOL_NAME
.
Tambahkan label ini ke kolom nodeSelector
di Pod Anda seperti yang ditunjukkan pada contoh berikut:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
cloud.google.com/gke-nodepool: POOL_NAME
Untuk informasi selengkapnya, baca bagian Menetapkan Pod ke Node.
Sebagai alternatif pemilih node, Anda dapat menggunakan afinitas node. Gunakan afinitas node jika Anda menginginkan aturan "lunak" ketika Pod mencoba memenuhi batasan, tetapi tetap dijadwalkan meskipun batasan tidak dapat dipenuhi. Untuk mengetahui informasi selengkapnya, lihat Afinitas node. Anda juga dapat menentukan permintaan resource untuk container.
Men-downgrade node pool
Anda dapat mendowngrade node pool, misalnya, untuk memitigasi upgrade node pool yang tidak berhasil. Tinjau batasan sebelum mendowngrade node pool.
Gunakan strategi upgrade node blue-green jika Anda perlu mengoptimalkan mitigasi risiko untuk upgrade node pool yang memengaruhi workload Anda. Dengan strategi ini, Anda dapat me-rollback upgrade yang sedang berlangsung, agar dikembalikan ke node asli jika upgrade tidak berhasil.
- Tetapkan pengecualian pemeliharaan untuk cluster guna mencegah agar node pool tidak diupgrade secara otomatis oleh GKE setelah didowngrade.
- Untuk mendowngrade node pool, tentukan versi yang lebih lama sambil mengikuti petunjuk untuk Mengupgrade node pool secara manual.
Menghapus node pool
Menghapus node pool akan menghapus node dan semua workload yang berjalan, tanpa mengikuti
setelan
PodDisruptionBudget
. Untuk mempelajari lebih lanjut pengaruhnya terhadap workload Anda, termasuk
interaksi dengan pemilih node, lihat Menghapus node
pool.
gcloud
Untuk menghapus node pool, jalankan perintah gcloud container node-pools delete
:
gcloud container node-pools delete POOL_NAME \
--cluster CLUSTER_NAME
Konsol
Untuk menghapus node pool, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di daftar cluster, klik nama cluster Standar yang ingin Anda ubah.
Klik tab Nodes.
Di bagian Node Pools, klik delete di samping node pool yang ingin Anda hapus.
Saat diminta untuk mengonfirmasi, klik Delete.
Memigrasikan node ke jenis mesin yang berbeda
Untuk mempelajari berbagai pendekatan dalam memindahkan workload antarjenis mesin, misalnya, untuk bermigrasi ke jenis mesin yang lebih baru, lihat Memigrasikan node ke jenis mesin yang berbeda.
Memigrasikan workload antar-node pool
Untuk memigrasikan workload dari satu node pool ke node pool lain, lihat Memigrasikan workload antar-node pool. Misalnya, Anda dapat menggunakan petunjuk ini jika mengganti node pool yang ada dengan node pool baru dan ingin memastikan bahwa workload dipindahkan ke node baru dari node yang ada.
Memecahkan masalah
Untuk mengetahui informasi pemecahan masalah, lihat Memecahkan masalah node pool Standar dan Memecahkan masalah pendaftaran node.
Langkah berikutnya
- Baca cara kerja node pool.
- Pelajari node pool penyediaan otomatis.
- Pelajari cara GKE dapat otomatis memperbaiki node yang tidak sehat.
- Pelajari cara mengonfigurasi
kubelet
dansysctl
menggunakan Konfigurasi Sistem Node.