Dokumen ini memberikan ringkasan singkat tentang update berkelanjutan standar, lalu membahas detail tentang update lonjakan, yang merupakan jenis update berkelanjutan khusus. Dibandingkan dengan update berkelanjutan standar, update lonjakan memungkinkan Anda mengonfigurasi kecepatan update. Update Surge juga memungkinkan Anda mengontrol seberapa mengganggu update pada beban kerja.
Untuk mengetahui informasi cara mengaktifkan dan mengonfigurasi update lonjakan untuk GKE di AWS, lihat Mengonfigurasi update lonjakan node pool.
Cara kerja update berkelanjutan standar
Beberapa update pada kumpulan node, seperti saat Anda mengubah anotasi kumpulan node, tidak memerlukan mulai ulang node, sehingga tidak menimbulkan update berkelanjutan. Jika GKE di AWS dapat menerapkan perubahan pada node pool tanpa harus memulai ulang atau membuat ulang resource, GKE akan melakukannya untuk mencegah gangguan.
Namun, sebagian besar update pada kumpulan node di GKE di AWS biasanya melibatkan penghentian node yang ada, dan peluncuran node baru dengan setelan yang diperbarui. Proses penghentian node yang ada dapat mengganggu beban kerja.
Secara default, GKE di AWS melakukan update berkelanjutan standar. Metode ini mengupdate node satu per satu, dan diganti menggunakan pendekatan "hentikan sebelum membuat": node dihentikan terlebih dahulu, lalu node baru yang diupdate diluncurkan. Hal ini meminimalkan gangguan karena hanya satu node yang dihentikan dan diganti pada waktu tertentu.
Berikut langkah-langkah yang diambil GKE di AWS selama update berkelanjutan standar:
- Memilih node dari kumpulan node dan menandai node sebagai tidak tersedia untuk memastikan tidak ada Pod baru yang dimulai di dalamnya. Tindakan ini disebut cordoning.
- Merelokasi Pod aktif dari node yang digabungkan ke node lain yang tersedia dalam cluster. Jika node lain memiliki kapasitas yang memadai, node tersebut akan mengakomodasi Pod yang dikeluarkan. Jika tidak, penskalaan otomatis cluster, yang tetap aktif selama update berkelanjutan standar, akan memulai peningkatan skala dan menyediakan node tambahan untuk memastikan ada kapasitas yang cukup untuk menjadwalkan Pod yang dikeluarkan. Untuk informasi tentang langkah yang diambil untuk melindungi workload selama proses ini, lihat Perlindungan beban kerja selama pengubahan ukuran.
- Menghentikan node yang diblokir.
- Ganti node yang terbungkus dengan node baru dengan setelan yang diperbarui.
- Melakukan health check pada node operasional yang baru. Jika kumpulan node
gagal dalam health check, kumpulan node tersebut akan ditandai dengan status
DEGRADED
. Status ini dapat dilihat dengan menjalankan perintahgcloud container aws node-pools describe
. Saat kumpulan node ditandai sebagaiDEGRADED
, Pod baru mungkin tidak dijadwalkan pada node dalam kumpulan tersebut. - Terus mengupdate, node demi node, hingga semua node dalam kumpulan telah diupdate.
Cara kerja update lonjakan
Di GKE di AWS, metode rolling standar memperbarui node satu per satu. Update lonjakan, yang merupakan bentuk update berkelanjutan, memungkinkan Anda mengupdate beberapa node secara bersamaan. Oleh karena itu, update lonjakan lebih cepat daripada update berkelanjutan standar. Namun, mengupdate beberapa node secara bersamaan dapat mengganggu beban kerja. Untuk mengurangi hal ini, update lonjakan menyediakan opsi untuk memodulasi tingkat gangguan pada workload Anda.
Cara lain agar update lonjakan dapat berbeda dari update berkelanjutan standar adalah pada cara penggantian node. Update berkelanjutan standar mengganti node menggunakan strategi "hentikan sebelum membuat". Bergantung pada setelan yang Anda pilih, update lonjakan dapat menggunakan strategi "buat sebelum menghentikan", strategi "hentikan sebelum membuat", atau bahkan kombinasi keduanya.
Autoscaler cluster memainkan peran lebih penting dalam update lonjakan daripada dalam update berkelanjutan standar. Itulah sebabnya peran ini berperan jelas dalam daftar tindakan berikut yang dilakukan GKE di AWS selama update lonjakan:
- Pembuatan grup penskalaan otomatis baru: GKE di AWS menyediakan node baru dengan modifikasi yang ditentukan oleh perintah update, dan menetapkan node baru ini ke grup penskalaan otomatis AWS (ASG) baru.
- Perilaku penskalaan otomatis cluster: Saat update lonjakan dimulai, penskalaan otomatis cluster akan diaktifkan untuk grup penskalaan otomatis baru. Autoscaler cluster untuk grup penskalaan otomatis asli dinonaktifkan. Tindakan ini memastikan bahwa setiap operasi penskalaan hanya menargetkan grup baru.
- Penggantian node: Bergantung pada parameter update lonjakan, berbagai
strategi untuk penggantian node digunakan:
- "buat sebelum menghentikan": strategi ini diaktifkan saat
parameter
max-surge-update
ditetapkan ke nilai yang lebih besar dari nol. Proses ini memunculkan node baru di ASG baru sebelum menghentikan node lama di ASG asli, yang bertujuan untuk meminimalkan gangguan layanan. - "hentikan sebelum membuat": metode ini dipicu saat
parameter
max-surge-update
ditetapkan ke nol dan parametermax-unavailable-update
memiliki nilai yang lebih besar dari nol. Node dari ASG asli dihentikan terlebih dahulu, diikuti dengan pembuatan node baru di ASG baru.
- "buat sebelum menghentikan": strategi ini diaktifkan saat
parameter
- Penyesuaian ukuran kumpulan node: Selama update, ukuran kumpulan node
(yaitu, jumlah node pada ASG lama dan baru) mungkin berfluktuasi
di atas atau di bawah jumlah node asli yang ada dalam kumpulan node sebelum
update dimulai. Secara khusus, GKE di AWS bertujuan untuk mempertahankan total jumlah node dalam rentang (
original_count
-max-unavailable-update
) hingga (original_count
+max-surge-update
). Akhirnya, node di ASG lama (original_count
) diganti dengan node yang diperbarui di ASG baru. Autoscaler cluster mungkin meluncurkan lebih banyak node di ASG baru jika mendeteksi bahwa Pod tidak dapat dijadwalkan, tetapi tetap dalam batas yang ditentukan olehmin-nodes
danmax-nodes
.
Contoh untuk mengilustrasikan proses
Untuk lebih memahami cara kerja pembaruan lonjakan, pertimbangkan contoh berikut. Misalkan Anda memiliki kumpulan node dengan 5 node, dan Anda menjalankan perintah berikut:
gcloud container aws node-pools update production-node-pool
--cluster my-cluster \
--location us-west1 \
--max-surge-update 2 \
--max-unavailable-update 1 \
--node-version 1.27.6-gke.700
Dalam contoh ini, max-surge-update
ditetapkan ke 2, max-unavailable-update
ditetapkan ke 1, dan Anda memberikan versi node pool baru (artinya, Anda mengubah versi GKE yang berjalan di node di node pool).
Menjalankan perintah ini akan memicu update lonjakan dan GKE di AWS akan melakukan tindakan berikut:
- Membuat 2 node tambahan karena nilai
max-surge-update
sama dengan 2. - Menetapkan 2 node tambahan ini ke grup penskalaan otomatis AWS baru.
- Menghapus node dari grup penskalaan otomatis asli setelah node baru ini
beroperasi. GKE di AWS menurunkan hingga 3 node (nilai gabungan
max-surge-update
danmax-unavailable-update
), tetapi memastikan bahwa maksimal hanya satu node yang menjadi tidak tersedia kapan saja (karena nilaimax-unavailable-update
1). - Ulangi langkah-langkah ini hingga semua node di kumpulan node telah diupdate ke versi GKE baru.
Selama update ini, kumpulan node berisi antara 4 hingga 7 node operasional.
Hal yang perlu dipertimbangkan sebelum menjalankan update lonjakan
Sebelum menjalankan update lonjakan, perhatikan hal berikut:
- Instance tambahan yang dibuat sebagai bagian dari langkah lonjakan ini berpotensi melebihi batas kuota instance AWS Anda. Jika Anda tidak memiliki cukup kuota dan instance tambahan ini tidak dapat disediakan, update mungkin akan gagal.
- Jika
max-unavailable-update
disetel ke 0, gangguan pada beban kerja masih dapat terjadi saat Pod dikeluarkan dan dijadwalkan ulang ke node yang lebih baru. - Jumlah maksimum node yang dapat diupdate secara bersamaan sama dengan
jumlah
max-surge-update
danmax-unavailable-update
, dan dibatasi hingga 20.
Pilih setelan lonjakan yang tepat untuk kebutuhan Anda
Meskipun update berkelanjutan standar sering menggunakan pendekatan "hentikan sebelum membuat", update lonjakan memperkenalkan fleksibilitas yang lebih besar. Bergantung pada konfigurasi, update lonjakan dapat mengikuti strategi "buat sebelum menghentikan", strategi "hentikan sebelum membuat", atau kombinasi keduanya. Bagian ini menjelaskan berbagai konfigurasi untuk membantu Anda memilih pendekatan terbaik untuk workload Anda.
Tabel berikut menunjukkan tiga contoh setelan, dan menyoroti dampaknya terhadap kecepatan update dan potensi gangguan pada workload Anda:
Nama | Deskripsi | Konfigurasi |
Setelan seimbang (default) | Seimbang, lebih lambat namun tidak terlalu mengganggu. | maxSurge=1, maxavailable=0 |
Update cepat tanpa resource tambahan | Cepat, tanpa resource lonjakan, sangat mengganggu. | maxSurge=0, maxAvailable=20 |
Update cepat yang tidak terlalu mengganggu | Cepat, sebagian besar resource lonjakan, dan tidak terlalu mengganggu. | maxSurge=20, maxAvailable=0 |
Setiap setelan dalam tabel dijelaskan di bagian berikut.
Setelan seimbang (default)
Cara paling mudah untuk menggunakan update lonjakan adalah dengan konfigurasi
default max-surge-update=1
dan max-unavailable-update=0
. Konfigurasi
ini hanya menambahkan 1 node lonjakan ke kumpulan node selama update, dan
hanya 1 node yang diupdate pada satu waktu, mengikuti pendekatan "create sebelum penghentian". Dibandingkan dengan update berkelanjutan tanpa lonjakan standar, yang setara dengan (max-surge-update=0
, max-unavailable-update=1
), metode ini tidak terlalu mengganggu, mempercepat mulai ulang Pod selama update, dan lebih konservatif dalam prosesnya.
Penting untuk diperhatikan bahwa mengadopsi pengaturan yang seimbang dapat menimbulkan biaya tambahan karena node lonjakan sementara yang ditambahkan selama update. Node tambahan ini dikenai biaya saat aktif, sehingga sedikit meningkatkan pengeluaran keseluruhan dibandingkan dengan metode tanpa node lonjakan.
Update cepat tanpa resource tambahan
Untuk beban kerja yang dapat menoleransi gangguan, pendekatan update yang lebih cepat mungkin
sesuai. Dengan mengonfigurasi max-surge-update=0
dan max-unavailable-update=20
,
Anda dapat mencapai hal ini. Dengan konfigurasi ini, 20 node dapat diupdate secara bersamaan
tanpa menambahkan node lonjakan. Metode update ini mengikuti pendekatan "hentikan sebelum
membuat". Karena tidak ada node lonjakan tambahan yang diperkenalkan selama
proses, metode ini juga paling hemat biaya, sehingga menghindari biaya tambahan
yang terkait dengan node sementara.
Update cepat yang tidak terlalu mengganggu
Jika beban kerja Anda sensitif terhadap gangguan, Anda dapat meningkatkan kecepatan update dengan setelan berikut: max-surge-update=20
dan max-unavailable-update=0
. Konfigurasi ini mengupdate 20 node secara paralel dengan cara
"buat sebelum menghentikan".
Namun, kecepatan update secara keseluruhan dapat dibatasi jika Anda telah menyiapkan
PodDisruptionBudgets
(PDB)
untuk workload Anda. Hal ini karena PDB membatasi jumlah Pod yang
dapat dikosongkan pada waktu tertentu. Meskipun konfigurasi PDB dapat bervariasi, jika Anda membuat PDB dengan maxUnavailable
sama dengan 1 untuk satu atau beberapa workload yang berjalan di kumpulan node, hanya satu Pod dari workload tersebut yang dapat dikeluarkan pada satu waktu, sehingga membatasi paralelisme keseluruhan update.
Ingat bahwa memulai beberapa node lonjakan di awal proses update dapat menyebabkan peningkatan biaya sementara, terutama jika dibandingkan dengan konfigurasi yang tidak menambahkan node ekstra atau menambahkan lebih sedikit node selama update.
Langkah selanjutnya
Untuk mengetahui informasi cara mengaktifkan dan mengonfigurasi update lonjakan untuk GKE di AWS, lihat Mengonfigurasi update lonjakan node pool.