Tentang update lonjakan

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:

  1. 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.
  2. 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.
  3. Menghentikan node yang diblokir.
  4. Ganti node yang terbungkus dengan node baru dengan setelan yang diperbarui.
  5. 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 perintah gcloud container aws node-pools describe. Saat kumpulan node ditandai sebagai DEGRADED, Pod baru mungkin tidak dijadwalkan pada node dalam kumpulan tersebut.
  6. 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:

  1. 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.
  2. 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.
  3. 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 parameter max-unavailable-update memiliki nilai yang lebih besar dari nol. Node dari ASG asli dihentikan terlebih dahulu, diikuti dengan pembuatan node baru di ASG baru.
  4. 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 oleh min-nodes dan max-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:

  1. Membuat 2 node tambahan karena nilai max-surge-update sama dengan 2.
  2. Menetapkan 2 node tambahan ini ke grup penskalaan otomatis AWS baru.
  3. Menghapus node dari grup penskalaan otomatis asli setelah node baru ini beroperasi. GKE di AWS menurunkan hingga 3 node (nilai gabungan max-surge-update dan max-unavailable-update), tetapi memastikan bahwa maksimal hanya satu node yang menjadi tidak tersedia kapan saja (karena nilai max-unavailable-update 1).
  4. 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 dan max-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.