Mengupgrade cluster atau node pool secara manual


Secara default, upgrade otomatis diaktifkan untuk cluster Google Kubernetes Engine (GKE) dan untuk node pool GKE Standard.

Halaman ini menjelaskan cara meminta upgrade atau downgrade secara manual untuk panel kontrol atau node cluster GKE. Anda dapat mengupgrade versi secara manual sebagai berikut:

Untuk mengupgrade sebuah cluster, GKE mengupdate versi yang dijalankan panel kontrol dan node. Cluster diupgrade ke versi minor yang lebih baru (misalnya, 1.24 hingga 1.25) atau versi patch yang lebih baru (misalnya, 1.24.2-gke.100 ke 1.24.5-gke.200). Untuk informasi selengkapnya, silakan melihat Pembuatan versi dan dukungan GKE.

Anda dapat mempelajari cara kerja upgrade cluster otomatis dan manual lebih lanjut. Anda juga dapat mengontrol kapan upgrade otomatis dapat dan tidak dapat dilakukan dengan mengonfigurasi masa dan pengecualian pemeliharaan.

GKE versi baru diumumkan secara berkala, dan Anda dapat menerima pemberitahuan tentang versi baru cluster tertentu yang dapat diupgrade melalui notifikasi cluster.

Untuk mempelajari versi yang tersedia, silakan melihat Pembuatan versi. Untuk mempelajari cluster lebih lanjut, silakan melihat Arsitektur cluster. Untuk panduan tentang mengupgrade cluster, silakan melihat Praktik terbaik untuk mengupgrade cluster.

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 initialize gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Menyimpan data ke persistent disk

Sebelum mengupgrade node pool, Anda harus memastikan bahwa setiap data yang ingin disimpan telah disimpan di Pod menggunakan volume persisten yang menggunakan persistent disk. Persistent disk dilepas, bukan dihapus, selama upgrade, dan datanya "diserahkan" di antar-Pod.

Pembatasan berikut berkaitan dengan persistent disk:

  • Node tempat Pod berjalan harus merupakan VM Compute Engine
  • VM tersebut harus berada dalam project dan zona Compute Engine yang sama dengan persistent disk

Untuk mempelajari cara menambahkan persistent disk ke instance node yang ada, silakan melihat Menambahkan atau mengubah ukuran persistent disk zona dalam dokumentasi Compute Engine.

Tentang upgrade

Panel kontrol dan nodecluster diupgrade secara terpisah.

Panel kontrol cluster selalu diupgrade secara berkala, terlepas dari apakah cluster Anda telah terdaftar di saluran rilis atau belum.

Untuk menerima notifikasi upgrade secara proaktif, silakan melihat Menerima notifikasi cluster.

Batasan

Cluster alfa tidak dapat diupgrade.

Versi yang didukung

Catatan rilis mengumumkan saat versi baru tersedia dan saat versi lama tidak lagi tersedia. Anda dapat membuat daftar semua versi cluster dan node yang didukung kapan saja menggunakan perintah ini:

gcloud container get-server-config

Jika cluster terdaftar di saluran rilis, Anda dapat mengupgrade ke versi patch di saluran rilis yang berbeda dengan versi minor yang sama dengan panel kontrol. Misalnya, Anda dapat mengupgrade cluster dari versi 1.21.12-gke.1700 di saluran Reguler ke 1.21.13-gke.900 di saluran Cepat. Untuk informasi selengkapnya, silakan melihat Menjalankan versi patch dari saluran yang lebih baru. Semua cluster Autopilot terdaftar di saluran rilis.

Batasan downgrade

Anda dapat mendowngrade versi cluster ke versi sebelumnya dalam skenario tertentu.

Untuk mengurangi upgrade panel kontrol cluster yang gagal, Anda dapat mendowngrade panel kontrol ke rilis patch sebelumnya jika versi tersebut adalah rilis patch sebelumnya dalam versi minor yang sama. Misalnya, jika panel kontrol cluster Anda menjalankan GKE 1.25.3-gke.400, Anda dapat mendowngrade panel kontrol ke 1.25.2-gke.100, jika versi tersebut masih tersedia.

Anda tidak dapat mendowngrade panel kontrol cluster Kubernetes ke versi minor yang lebih lama. Misalnya, jika panel kontrol Anda menjalankan GKE versi 1.25, Anda tidak dapat melakukan downgrade ke versi 1.24. Jika Anda mencoba melakukannya, pesan error berikut akan muncul:

ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.24.3-gke.100": specified version is not
newer than the current version.

Anda tidak dapat mendowngrade versi minor panel kontrol cluster, jadi sebaiknya Andamenguji dan memenuhi persyaratan upgrade versi minor dengan cluster di lingkungan pengujian saat versi minor baru tersedia, tetapi sebelum versi tersebut menjadi default. Tindakan ini sangat direkomendasikan jika cluster Anda mungkin terpengaruh oleh perubahan signifikan dalam versi minor berikutnya, seperti API atau fitur yang tidak digunakan lagi yang dihapus.

Untuk memitigasi upgrade node pool yang tidak berhasil, Anda dapat mendowngrade node pool ke rilis patch atau versi minor sebelumnya. Pastikan Anda tidak mendowngrade node ke versi yang lebih dari dua versi minor sebelum versi panel kontrol cluster.

Mengupgrade cluster

Google mengupgrade cluster dan node secara otomatis. Untuk mendapatkan kontrol lebih besar terhadap upgrade otomatis cluster Anda dan node-nya, Anda dapat mendaftarkannya di saluran rilis. Semua cluster Autopilot terdaftar secara otomatis di saluran rilis.

Untuk mempelajari lebih lanjut cara mengelola versi GKE cluster, silakan melihat Upgrade.

Anda dapat melakukan inisialisasi upgrade manual kapan saja setelah versi baru tersedia.

Mengupgrade panel kontrol secara manual

Saat melakukan inisialisasi upgrade cluster, Anda tidak dapat mengubah konfigurasi cluster selama beberapa menit sampai panel kontrol dapat diakses kembali. Jika Anda perlu mencegah periode nonaktif selama upgrade panel kontrol, pertimbangkan untuk menggunakan cluster Autopilot atau cluster Standard regional. Operasi ini tidak memengaruhi ketersediaan worker node tempat workload Anda berjalan karena node tersebut tetap tersedia selama upgrade panel kontrol.

Anda dapat mengupgrade panel kontrol Autopilot atau Standard secara manual menggunakan Konsol Google Cloud atau Google Cloud CLI.

gcloud

Guna melihat versi yang tersedia untuk panel kontrol cluster Anda, jalankan perintah berikut:

gcloud container get-server-config

Untuk mengupgrade ke versi cluster default, jalankan perintah berikut:

gcloud container clusters upgrade CLUSTER_NAME --master

Untuk mengupgrade ke versi tertentu yang bukan merupakan default, tentukan flag --cluster-version seperti dalam perintah berikut:

gcloud container clusters upgrade CLUSTER_NAME --master \
    --cluster-version VERSION

Ganti VERSION dengan versi yang akan digunakan cluster setelah upgrade. Anda dapat menggunakan versi tertentu, seperti 1.18.17-gke.100 atau Anda dapat menggunakan alias versi, seperti latest. Untuk mengetahui informasi selengkapnya, silakan melihat Menentukan versi cluster.

Konsol

Untuk mengupdate panel kontrol cluster secara manual, lakukan langkah-langkah berikut:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik nama cluster yang diinginkan.

  3. Di bagian Dasar-dasar cluster, klik Upgrade Tersedia di samping Versi.

  4. Pilih versi yang diinginkan, lalu klik Simpan Perubahan.

Setelah mengupgrade panel kontrol Standard, Anda dapat mengupgrade node-nya. Secara default, node Standard yang dibuat menggunakan Konsol Google Cloud telah mengaktifkan upgrade otomatis, sehingga proses ini terjadi secara otomatis. Autopilot selalu mengupgrade node secara otomatis.

Mendowngrade cluster

  1. Tetapkan pengecualian pemeliharaan sebelum melakukan downgrade untuk mencegah GKE mengupgrade otomatis panel kontrol setelah Anda mendowngradenya.
  2. Downgrade panel kontrol cluster ke versi patch sebelumnya:

     gcloud container clusters upgrade CLUSTER_NAME \
         --master --cluster-version VERSION
    

Menonaktifkan upgrade otomatis cluster

Keamanan infrastruktur merupakan prioritas tinggi bagi GKE, sehingga panel kontrol diupgrade secara berkala dan tidak dapat dinonaktifkan. Namun, Anda dapat menerapkan masa dan pengecualian pemeliharaan untuk menangguhkan upgrade sementara bagi panel dan node kontrol.

Meskipun tidak direkomendasikan, Anda dapat menonaktifkan upgrade otomatis node.

Mengupgrade node pool

Secara default, node cluster mengaktifkan upgrade otomatis, dan sebaiknya Anda tidak menonaktifkannya. Upgrade otomatis node memastikan bidang kontrol dan versi node cluster Anda tetap sinkron dan sesuai dengan kebijakan kemiringan versi Kubernetes, yang memastikan bahwa bidang kontrol kompatibel dengan node hingga dua versi minor yang lebih lama dari bidang kontrol. Misalnya, bidang kontrol Kubernetes 1.29 kompatibel dengan node Kubernetes 1.27.

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.

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.

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 kumpulan node secara manual agar sesuai dengan versi bidang kontrol atau ke versi sebelumnya yang masih tersedia dan kompatibel dengan bidang kontrol. Anda dapat mengupgrade beberapa node pool secara paralel, sedangkan GKE secara otomatis hanya mengupgrade satu kumpulan node 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.

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 atau cluster-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:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di samping cluster yang ingin diedit, klik Actions, lalu klik Edit.

  3. Di halaman Cluster details, klik tab Nodes.

  4. Di bagian Node Pools, klik nama node pool yang ingin Anda upgrade.

  5. Klik Edit.

  6. Klik Change di bagian Node version.

  7. Pilih versi yang diinginkan dari menu drop-down Node version, lalu klik Change.

Mendowngrade node pool

Anda dapat mendowngrade node pool, misalnya, untuk memitigasi upgrade node pool yang tidak berhasil. Tinjau batasan sebelum mendowngrade node pool.

  1. Tetapkan pengecualian pemeliharaan untuk cluster guna mencegah agar node pool tidak diupgrade secara otomatis oleh GKE setelah didowngrade.
  2. Untuk mendowngrade node pool, tentukan versi yang lebih lama sambil mengikuti petunjuk untuk Mengupgrade node pool secara manual.

Mengubah parameter upgrade lonjakan

Untuk mempelajari cara mengubah parameter upgrade lonjakan lebih lanjut, silakan melihat Mengonfigurasi upgrade lonjakan.

Memeriksa status upgrade node pool

Anda dapat memeriksa status upgrade menggunakan gcloud container operations.

Lihat daftar setiap operasi yang sedang berjalan dan telah selesai di cluster:

gcloud container operations list

Setiap operasi diberi ID operasi dan jenis operasi, serta waktu mulai dan berakhir, cluster target, dan status. Daftar tersebut akan terlihat mirip dengan contoh berikut:

NAME                              TYPE                ZONE           TARGET              STATUS_MESSAGE  STATUS  START_TIME                      END_TIME
operation-1505407677851-8039e369  CREATE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT16:47:57.851933021Z  20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4  UPGRADE_CLUSTER     us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:40:05.136739989Z  20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989  DELETE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:41:53.918825764Z  20xx-xx-xxT18:43:48.639506814Z

Untuk mendapatkan informasi selengkapnya tentang operasi tertentu, tentukan ID operasi seperti yang ditunjukkan pada perintah berikut:

gcloud container operations describe OPERATION_ID

Contoh:

gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a

Memeriksa setelan upgrade node pool

Anda dapat melihat detail strategi upgrade node yang digunakan untuk kumpulan node menggunakan perintah gcloud container node-pools describe. Untuk upgrade blue-green, perintah juga menampilkan fase saat ini dari upgrade.

Jalankan perintah berikut:

gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool yang akan dideskripsikan.
  • CLUSTER_NAME: nama cluster node pool yang akan dideskripsikan.

Perintah ini akan memberikan output setelan upgrade saat ini. Contoh berikut menampilkan output jika Anda menggunakan strategi upgrade blue-green.

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

Jika Anda menggunakan strategi upgrade blue-green, outputnya juga menyertakan detail tentang setelan upgrade blue-green dan fase perantaranya saat ini. Contoh berikut menunjukkan kemungkinan tampilannya:

updateInfo:
  blueGreenInfo:
    blueInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
    bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
    greenInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME}
    greenPoolVersion: {GREEN_POOL_VERSION}
    phase: DRAINING_BLUE_POOL

Membatalkan upgrade node pool

Anda dapat membatalkan upgrade kapan saja. Untuk mempelajari lebih lanjut hal yang akan terjadi saat Anda membatalkan upgrade lonjakan, silakan melihat Membatalkan upgrade lonjakan. Untuk mempelajari lebih lanjut apa yang akan terjadi jika Anda membatalkan upgrade blue-green, silakan melihat Membatalkan upgrade blue-green.

  1. Mendapatkan ID operasi upgrade:

    gcloud container operations list
    
  2. Membatalkan upgrade:

    gcloud container operations cancel OPERATION_ID
    

Silakan melihat dokumentasi gcloud container operations cancel.

Melanjutkan upgrade node pool

Anda dapat melanjutkan upgrade dengan melakukan inisialisasi upgrade secara manual lagi, dengan menentukan versi target dari upgrade awal.

Misalnya, jika Anda menjeda upgrade yang sedang berlangsung ke versi 1.23.1-gke.100, Anda dapat melanjutkan upgrade yang dibatalkan dengan memulai upgrade yang sama lagi di node pool, yang menargetkan versi 1.23.1-gke.100.

Untuk mempelajari lebih lanjut apa yang akan terjadi saat Anda melanjutkan upgrade, silakan melihat Melanjutkan upgrade lonjakan dan upgrade blue-green.

Untuk melanjutkan upgrade, gunakan perintah berikut:

    gcloud container clusters upgrade CLUSTER_NAME \
      --node-pool=NODE_POOL_NAME \
      --cluster-version VERSION

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool tempat Anda ingin melanjutkan upgrade node pool.
  • CLUSTER_NAME: nama cluster node pool yang ingin Anda lanjutkan upgradenya.
  • VERSION: versi target dari upgrade node pool yang dibatalkan.

Untuk informasi selengkapnya, silakan melihat dokumentasi gcloud container clusters upgrade.

Me-roll back upgrade node pool

Anda dapat me-roll back node pool guna mendowngrade node yang diupgrade untuk mengembalikannya ke status aslinya sebelum upgrade node pool dimulai.

Gunakan perintah rollback jika upgrade yang sedang berlangsung dibatalkan, upgrade gagal, atau upgrade tidak selesai karena waktu masa pemeliharaan habis. Atau, jika Anda ingin menentukan versi, ikuti petunjuk untuk mendowngrade node pool.

Untuk mempelajari lebih lanjut apa yang akan terjadi saat Anda me-roll back upgrade node pool, silakan melihat Me-roll back upgrade lonjakan atau Me-roll back upgrade blue-green.

Untuk me-roll back upgrade, jalankan perintah berikut:

gcloud container node-pools rollback NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool yang upgrade node pool-nya akan di-roll back.
  • CLUSTER_NAME: nama cluster yang upgrade node pool-nya akan di-roll back

Silakan melihat dokumentasi gcloud container node-pools rollback.

Menyelesaikan upgrade node pool

Jika menggunakan strategi upgrade blue-green, Anda dapat menyelesaikan upgrade node pool selama Fase perendaman, melewati sisa waktu perendamannya.

Untuk mempelajari cara menyelesaikan upgrade node pool, silakan melihat Menyelesaikan upgrade node pool.

Untuk menyelesaikan upgrade saat menggunakan strategi upgrade blue-green, jalankan perintah berikut:

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool yang ingin Anda selesaikan upgradenya.
  • CLUSTER_NAME: nama cluster node pool yang ingin Anda selesaikan upgradenya.

Silakan melihat dokumentasi gcloud container node-pools complete-upgrade.

Masalah umum

Jika Anda memiliki objek PodDisruptionBudget yang dikonfigurasi untuk tidak mengizinkan gangguan tambahan, upgrade node mungkin akan gagal untuk mengupgrade ke versi panel kontrol setelah beberapa percobaan. Untuk mencegah kegagalan ini, sebaiknya tingkatkan skala Deployment atau HorizontalPodAutoscaler agar node dapat dihabiskan sambil tetap mematuhi konfigurasi PodDisruptionBudget.

Untuk melihat semua objek PodDisruptionBudget yang tidak mengizinkan gangguan:

kubectl get poddisruptionbudget --all-namespaces -o jsonpath='{range .items[?(@.status.disruptionsAllowed==0)]}{.metadata.name}/{.metadata.namespace}{"\n"}{end}'

Meskipun upgrade otomatis mungkin mengalami masalah, proses upgrade otomatis memaksa node untuk melakukan upgrade. Namun, upgrade memerlukan waktu tambahan untuk setiap node dalam namespace istio-system yang melanggar PodDisruptionBudget.

Pemecahan masalah

Penggunaan CPU node lebih tinggi dari yang diperkirakan

Anda mungkin mengalami masalah ketika node menggunakan CPU yang lebih tinggi dari yang diperkirakan untuk Pod yang berjalan.

Hal ini dapat terjadi jika cluster atau node Anda tidak menjalankan versi yang didukung. Tinjau catatan rilis untuk memastikan versi yang Anda gunakan tersedia dan didukung. Anda juga dapat menjalankan perintah berikut untuk melihat daftar semua versi cluster dan node yang didukung:

gcloud container get-server-config

Langkah berikutnya