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:
- Autopilot: Mengupgrade versi panel kontrol.
- Standard: Mengupgrade versi panel kontrol dan versi node pool.
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:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Klik nama cluster yang diinginkan.
Di bagian Dasar-dasar cluster, klik edit Upgrade Tersedia di samping Versi.
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
- Tetapkan pengecualian pemeliharaan sebelum melakukan downgrade untuk mencegah GKE mengupgrade otomatis panel kontrol setelah Anda mendowngradenya.
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
ataucluster-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:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di samping cluster yang ingin diedit, klik more_vert Actions, lalu klik edit Edit.
Di halaman Cluster details, klik tab Nodes.
Di bagian Node Pools, klik nama node pool yang ingin Anda upgrade.
Klik edit Edit.
Klik Change di bagian Node version.
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.
- Tetapkan pengecualian pemeliharaan untuk cluster guna mencegah agar node pool tidak diupgrade secara otomatis oleh GKE setelah didowngrade.
- 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.
Mendapatkan ID operasi upgrade:
gcloud container operations list
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
- Pelajari Arsitektur cluster.
- Pelajari Saluran rilis.