Fitur perbaikan otomatis node terus memantau kondisi setiap node dalam kumpulan node. Jika node menjadi tidak responsif, fitur perbaikan otomatis node akan memperbaiki node secara otomatis. Fitur ini mengurangi kemungkinan gangguan dan penurunan performa cluster, serta meminimalkan kebutuhan pemeliharaan cluster secara manual.
Anda dapat mengaktifkan perbaikan otomatis node saat membuat atau mengupdate kumpulan node. Perhatikan bahwa Anda mengaktifkan atau menonaktifkan fitur ini pada kumpulan node, bukan pada node individual.
Kondisi node tidak responsif
Perbaikan otomatis node memeriksa status respons setiap node untuk menentukan apakah
memerlukan perbaikan atau tidak. Node dianggap responsif jika melaporkan status Ready
.
Atau, jika aplikasi secara berturut-turut melaporkan status tidak responsif selama durasi
tertentu, perbaikan akan dimulai.
Status tidak responsif dapat muncul dari status NotReady
, yang terdeteksi dalam pemeriksaan berturut-turut selama sekitar 15 menit. Atau, status yang tidak responsif dapat disebabkan oleh kehabisan ruang boot disk, yang diidentifikasi selama sekitar 30 menit.
Anda dapat memeriksa sinyal kondisi node secara manual kapan saja dengan menjalankan perintah kubectl get nodes
.
Strategi perbaikan node
Perbaikan otomatis node mengikuti strategi tertentu untuk memastikan kesehatan
cluster dan ketersediaan aplikasi selama proses
perbaikan. Bagian ini menjelaskan cara fitur perbaikan otomatis node memenuhi
konfigurasi PodDisruptionBudget
, mematuhi Pod Termination
Grace Period
, dan mengambil tindakan lain yang meminimalkan gangguan
cluster saat memperbaiki node.
Hormati PodDisruptionBudget
selama 30 menit
Jika perlu diperbaiki, node tidak akan langsung dikosongkan dan dibuat ulang. Sebagai gantinya, fitur perbaikan otomatis node mengikuti konfigurasi PodDisruptionBudget (PDB) hingga 30 menit, setelah semua Pod pada node akan dihapus. (Konfigurasi PDB menentukan, antara lain, jumlah minimum replika Pod tertentu yang harus tersedia pada waktu tertentu).
Dengan memenuhi PodDisruptionBudget
selama sekitar 30 menit, fitur perbaikan otomatis node
memberikan periode peluang bagi Pod untuk dijadwalkan ulang
dan didistribusikan ulang dengan aman di seluruh node sehat lainnya dalam cluster. Hal ini
membantu mempertahankan tingkat ketersediaan aplikasi yang diinginkan selama proses
perbaikan.
Setelah batas waktu 30 menit, perbaikan otomatis node akan dilanjutkan dengan proses
perbaikan, meskipun itu berarti melanggar PodDisruptionBudget
. Tanpa batas
waktu, proses reparasi dapat berhenti tanpa batas waktu jika konfigurasi
PodDisruptionBudget
mencegah penghapusan yang diperlukan untuk reparasi.
Mematuhi Masa Tenggang Penghentian Pod
Fitur perbaikan otomatis node juga memenuhi Masa Tenggang Penghentian Pod selama sekitar 30 menit. Masa Tenggang Penghentian Pod memberi Pod periode waktu untuk penonaktifan tuntas selama penghentian. Selama masa tenggang, kubelet pada Node bertanggung jawab untuk menjalankan tugas pembersihan dan mengosongkan resource yang terkait dengan Pod pada Node tersebut. Fitur perbaikan otomatis node memerlukan waktu hingga 30 menit bagi kubelet untuk menyelesaikan pembersihan ini. Jika alokasi 30 menit berlalu, Node akan dipaksa untuk berhenti, terlepas dari apakah Pod telah dihentikan dengan baik atau tidak.
Strategi perbaikan node tambahan
Perbaikan otomatis node juga menerapkan strategi berikut:
- Jika beberapa node memerlukan perbaikan, node tersebut diperbaiki satu per satu untuk membatasi gangguan cluster dan untuk melindungi workload.
- Jika Anda menonaktifkan perbaikan otomatis node selama proses perbaikan, perbaikan yang sedang berlangsung akan dilanjutkan hingga operasi perbaikan berhasil atau gagal.
Cara mengaktifkan dan menonaktifkan perbaikan node otomatis
Anda dapat mengaktifkan atau menonaktifkan perbaikan otomatis node saat membuat atau mengupdate kumpulan node. Anda dapat mengaktifkan atau menonaktifkan fitur ini pada node pool, bukan pada node individual.
Mengaktifkan perbaikan otomatis untuk kumpulan node baru
gcloud container aws node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--instance-type INSTANCE_TYPE \
--root-volume-size ROOT_VOLUME_SIZE \
--iam-instance-profile NODEPOOL_PROFILE \
--node-version NODE_VERSION \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--max-pods-per-node MAX_PODS_PER_NODE \
--location GOOGLE_CLOUD_LOCATION \
--subnet-id NODEPOOL_SUBNET \
--ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "Name=CLUSTER_NAME-NODE_POOL_NAME" \
--enable-autorepair
Ganti kode berikut:
NODE_POOL_NAME
: nama yang Anda pilih untuk kumpulan node. Untuk mendapatkan nama node pool, jalankan perintahgcloud container aws node-pools list --cluster CLUSTER_NAME --location GOOGLE_CLOUD_LOCATION
CLUSTER_NAME
: nama cluster untuk menambahkan kumpulan node keINSTANCE_TYPE
: jenis instance mesin AWS yang diinginkan untuk kumpulan node ini— misalnya,m5.large
ROOT_VOLUME_SIZE
: ukuran yang diinginkan untuk volume root setiap node, dalam GbNODEPOOL_PROFILE
: profil instance IAM untuk VM kumpulan nodeNODE_VERSION
: versi Kubernetes yang akan diinstal pada setiap node di kumpulan node (misalnya, "1.28.7-gke.1700")MIN_NODES
: jumlah minimum node yang dapat ditampung kumpulan nodeMAX_NODES
: jumlah maksimum node yang dapat ditampung kumpulan nodeMAX_PODS_PER_NODE
: jumlah maksimum pod yang dapat dibuat pada setiap node dalam kumpulanGOOGLE_CLOUD_LOCATION
: nama lokasi Google Cloud tempat kumpulan node ini akan dikelolaNODEPOOL_SUBNET
: ID subnet tempat kumpulan node akan dijalankan.- Tidak boleh ada tumpang tindih antara rentang IP Pod/Layanan cluster dan jaringan subnet kumpulan node. Untuk mengetahui informasi selengkapnya tentang cara memilih Pod dan rentang IP Layanan untuk cluster, baca artikel Memilih rentang CIDR untuk cluster Anda
- Jika subnet ini berada di luar blok CIDR utama VPC, beberapa langkah tambahan diperlukan. Untuk mengetahui informasi selengkapnya, lihat grup keamanan.
SSH_KEY_PAIR_NAME
: nama pasangan kunci AWS SSH yang dibuat untuk akses SSH (opsional)CONFIG_KMS_KEY_ARN
: Amazon Resource Name (ARN) dari kunci AWS KMS yang mengenkripsi data pengguna
Mengaktifkan perbaikan otomatis untuk kumpulan node yang ada
Untuk mengaktifkan perbaikan otomatis node pada kumpulan node yang ada, jalankan perintah berikut:
gcloud container aws node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--enable-autorepair
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: region Google Cloud yang mengelola cluster Anda
Menonaktifkan perbaikan otomatis untuk kumpulan node yang ada
gcloud container aws node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--no-enable-autorepair
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: region Google Cloud yang mengelola cluster Anda
Perhatikan bahwa GKE di AWS melakukan penonaktifan perbaikan otomatis node yang halus. Saat menonaktifkan perbaikan otomatis node untuk node pool yang ada, GKE di AWS akan meluncurkan operasi update node pool. Operasi akan menunggu hingga perbaikan node yang ada selesai sebelum dilanjutkan.
Periksa apakah perbaikan otomatis node diaktifkan
Jalankan perintah berikut untuk memeriksa apakah perbaikan otomatis node diaktifkan atau tidak:
gcloud container aws node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: region Google Cloud yang mengelola cluster Anda
Histori perbaikan node
Anda dapat melihat histori perbaikan yang dilakukan pada kumpulan node dengan menjalankan perintah berikut:
gcloud container aws operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters/CLUSTER_NAME/awsNodePools/NODEPOOL_NAME
Ganti kode berikut:
GOOGLE_CLOUD_LOCATION
: region Google Cloud yang didukung yang mengelola cluster Anda — misalnya,us-west1
PROJECT_ID
: proyek Google Cloud AndaCLUSTER_NAME
: nama cluster AndaNODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
Ringkasan kondisi kumpulan node
Setelah mengaktifkan perbaikan otomatis node, Anda dapat membuat ringkasan kesehatan kumpulan node dengan menjalankan perintah berikut:
gcloud container aws node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ringkasan sehat kumpulan node terlihat mirip dengan contoh ini:
{ "name": "some-np-name", "version": "some-version", "state": "RUNNING", ... "errors": [ { "message": "1 node(s) is/are identified as unhealthy among 2 total node(s) in the node pool. No node is under repair." } ], }
Ringkasan kondisi kumpulan node membantu Anda memahami status kumpulan node saat ini. Dalam contoh ini, ringkasan berisi pesan error yang menyatakan bahwa salah satu dari dua node di kumpulan node tidak responsif. Laporan ini juga melaporkan bahwa tidak ada node yang saat ini sedang menjalani proses perbaikan.