Fitur perbaikan otomatis node terus memantau kondisi setiap node dalam node pool. Jika node menjadi tidak responsif, fitur perbaikan otomatis node akan memperbaikinya secara otomatis. Fitur ini mengurangi kemungkinan terjadinya gangguan dan penurunan performa cluster, serta meminimalkan kebutuhan akan pemeliharaan cluster secara manual.
Anda dapat mengaktifkan perbaikan otomatis node saat membuat atau mengupdate node pool. Perhatikan bahwa Anda mengaktifkan atau menonaktifkan fitur ini di node pool, bukan di masing-masing node.
Kondisi node tidak responsif
Perbaikan otomatis node memeriksa status kondisi setiap node untuk menentukan apakah node tersebut memerlukan perbaikan. Node dianggap responsif jika melaporkan status Ready
.
Jika tidak, perbaikan akan dimulai jika node melaporkan status tidak responsif secara berturut-turut selama durasi tertentu.
Status tidak responsif dapat muncul dari status NotReady
, yang terdeteksi dalam pemeriksaan berturut-turut selama sekitar 15 menit. Atau, status tidak responsif dapat disebabkan oleh ruang boot disk yang habis, yang teridentifikasi selama jangka waktu 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 kondisi keseluruhan cluster dan ketersediaan aplikasi selama proses perbaikan. Bagian ini menjelaskan cara fitur perbaikan otomatis node mematuhi konfigurasi PodDisruptionBudget
, mematuhi Pod Termination
Grace Period
, dan mengambil tindakan lain yang meminimalkan gangguan cluster saat memperbaiki node.
Honor PodDisruptionBudget
selama 30 menit
Jika memerlukan perbaikan, node tidak akan langsung dikosongkan dan dibuat ulang. Sebagai gantinya, fitur perbaikan otomatis node akan mematuhi konfigurasi PodDisruptionBudget (PDB) hingga 30 menit, setelah itu semua Pod di node akan dihapus. (Konfigurasi PDB menentukan, antara lain, jumlah minimum replika Pod tertentu yang harus tersedia pada waktu tertentu).
Dengan mematuhi PodDisruptionBudget
selama sekitar 30 menit, fitur perbaikan otomatis node memberikan peluang bagi Pod untuk dijadwalkan ulang dan didistribusikan kembali dengan aman di seluruh node yang berfungsi baik di cluster. Tindakan
ini membantu mempertahankan tingkat ketersediaan aplikasi yang diinginkan selama proses
perbaikan.
Setelah batas waktu 30 menit, perbaikan otomatis node akan melanjutkan proses perbaikan, meskipun berarti melanggar PodDisruptionBudget
. Tanpa batas
waktu, proses perbaikan dapat terhenti tanpa batas jika konfigurasi PodDisruptionBudget
mencegah pengusiran yang diperlukan untuk perbaikan.
Mematuhi Masa Tenggang Penghentian Pod
Fitur perbaikan otomatis node juga mematuhi Masa Tenggang Penghentian Pod selama sekitar 30 menit. Masa Tenggang Penghentian Pod memberi Pod jangka waktu untuk penonaktifan yang tuntas selama penghentian. Selama masa tenggang, kubelet di Node bertanggung jawab untuk menjalankan tugas pembersihan dan membebaskan resource yang terkait dengan Pod di Node tersebut. Fitur perbaikan otomatis node memungkinkan kubelet menyelesaikan pembersihan ini hingga 30 menit. Jika 30 menit yang dialokasikan telah berlalu, Node akan dipaksa dihentikan, terlepas dari apakah Pod telah dihentikan dengan baik atau tidak.
Strategi perbaikan node tambahan
Perbaikan otomatis node juga menerapkan strategi berikut:
- Jika beberapa node perlu diperbaiki, node tersebut akan diperbaiki satu per satu untuk membatasi gangguan cluster dan melindungi workload.
- Jika Anda menonaktifkan perbaikan otomatis node selama proses perbaikan, perbaikan yang sedang berlangsung akan tetap 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 node pool. Anda mengaktifkan atau menonaktifkan fitur ini di node pool, bukan di masing-masing node.
Mengaktifkan perbaikan otomatis untuk node pool 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 node pool. Untuk mendapatkan nama node pool Anda, jalankan perintahgcloud container aws node-pools list --cluster CLUSTER_NAME --location GOOGLE_CLOUD_LOCATION
CLUSTER_NAME
: nama cluster tempat node pool akan dilampirkanINSTANCE_TYPE
: jenis instance mesin AWS yang diinginkan untuk node pool ini—misalnya,m5.large
ROOT_VOLUME_SIZE
: ukuran yang diinginkan untuk volume root setiap node, dalam GbNODEPOOL_PROFILE
: profil instance IAM untuk VM node poolNODE_VERSION
: versi Kubernetes yang akan diinstal di setiap node dalam node pool (misalnya, "1.32.4-gke.200")MIN_NODES
: jumlah minimum node yang dapat dimuat node poolMAX_NODES
: jumlah maksimum node yang dapat dimuat node poolMAX_PODS_PER_NODE
: jumlah maksimum pod yang dapat dibuat di satu node dalam poolGOOGLE_CLOUD_LOCATION
: nama lokasi Google Cloud tempat node pool ini akan dikelolaNODEPOOL_SUBNET
: ID subnet tempat node pool akan berjalan.- Tidak boleh ada tumpang-tindih antara rentang IP Pod/Layanan cluster dan jaringan subnet kumpulan node. Untuk mengetahui informasi selengkapnya tentang memilih rentang IP Pod dan Layanan untuk cluster Anda, lihat 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 SSH AWS 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 node pool yang sudah ada
Untuk mengaktifkan perbaikan otomatis node di node pool yang sudah 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 node pool Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: Google Cloud region yang mengelola cluster Anda
Menonaktifkan perbaikan otomatis untuk node pool yang sudah 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 node pool Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: Google Cloud region yang mengelola cluster Anda
Perhatikan bahwa GKE di AWS melakukan penonaktifan perbaikan otomatis node yang lancar. Saat menonaktifkan perbaikan otomatis node untuk node pool yang sudah ada, GKE di AWS akan meluncurkan operasi update node pool. Operasi menunggu hingga perbaikan node yang ada selesai sebelum dilanjutkan.
Memeriksa 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 node pool Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: Google Cloud region yang mengelola cluster Anda
Histori perbaikan node
Anda dapat melihat histori perbaikan yang dilakukan pada node pool 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 yang didukung Google Cloud yang mengelola cluster Anda — misalnya,us-west1
PROJECT_ID
: project Google Cloud AndaCLUSTER_NAME
: nama cluster AndaNODE_POOL_NAME
: nama unik untuk node pool Anda — misalnya,node-pool-1
Ringkasan kondisi node pool
Setelah mengaktifkan perbaikan otomatis node, Anda dapat membuat ringkasan kondisi node pool dengan menjalankan perintah berikut:
gcloud container aws node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ringkasan kondisi baik 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 kesehatan node pool membantu Anda memahami status node pool saat ini. Dalam contoh ini, ringkasan berisi pesan error yang menyatakan bahwa salah satu dari dua node di node pool tidak sehat. Laporan ini juga melaporkan bahwa saat ini tidak ada node yang sedang menjalani proses perbaikan.