Mengupgrade cluster

Saat menginstal bmctl versi baru, Anda dapat mengupgrade cluster yang ada yang dibuat dengan versi sebelumnya. Dengan mengupgrade cluster ke GKE terbaru pada versi Bare Metal, Anda akan mendapatkan fitur dan perbaikan tambahan di cluster Anda. Hal ini juga memastikan bahwa cluster Anda tetap didukung. Anda dapat mengupgrade cluster admin, hybrid, mandiri, atau pengguna dengan perintah bmctl upgrade cluster, atau Anda dapat menggunakan kubectl.

Untuk mempelajari proses upgrade lebih lanjut, lihat Siklus proses dan tahap upgrade cluster.

Merencanakan upgrade

Bagian ini berisi informasi dan link ke informasi yang harus Anda pertimbangkan sebelum mengupgrade cluster.

Praktik terbaik

Untuk mengetahui informasi yang membantu Anda mempersiapkan upgrade cluster, baca Praktik terbaik untuk cluster Anthos di upgrade cluster bare metal.

Upgrade pemeriksaan preflight

Pemeriksaan preflight dijalankan sebagai bagian dari upgrade cluster untuk memvalidasi status cluster dan kondisi node. Upgrade cluster tidak akan dilanjutkan jika pemeriksaan preflight gagal. Untuk informasi selengkapnya tentang pemeriksaan preflight, lihat Memahami pemeriksaan preflight.

Anda dapat memeriksa apakah cluster siap untuk diupgrade dengan menjalankan pemeriksaan preflight sebelum menjalankan upgrade. Untuk mengetahui informasi selengkapnya, lihat Pemeriksaan preflight untuk upgrade.

Masalah umum

Untuk mengetahui informasi tentang potensi masalah terkait upgrade cluster, lihat Cluster Anthos terkait masalah umum bare metal dan pilih kategori masalah Upgrade dan update.

Mengonfigurasi opsi upgrade

Sebelum memulai upgrade cluster, Anda dapat mengonfigurasi opsi upgrade berikut yang mengontrol cara kerja proses upgrade:

Opsi ini dapat mengurangi risiko gangguan terhadap aplikasi dan layanan penting serta mengurangi waktu upgrade keseluruhan secara signifikan. Opsi ini sangat berguna untuk cluster besar dengan banyak node dan node pool yang menjalankan workload penting. Untuk mengetahui informasi selengkapnya tentang fungsi opsi ini dan cara menggunakannya, lihat bagian berikut.

Upgrade kumpulan node pekerja selektif

Secara default, operasi upgrade cluster akan mengupgrade setiap node dan kumpulan node dalam cluster. Upgrade cluster dapat mengganggu dan memakan waktu, karena mengakibatkan setiap node dikosongkan dan semua pod terkait dimulai ulang/dijadwalkan ulang. Bagian ini menjelaskan cara menyertakan atau mengecualikan kumpulan node pekerja tertentu untuk upgrade cluster guna meminimalkan gangguan beban kerja. Fitur ini hanya berlaku untuk cluster pengguna, hybrid, dan mandiri, karena cluster admin tidak mengizinkan kumpulan node pekerja.

Anda dapat menggunakan upgrade kumpulan node selektif dalam situasi berikut:

  • Untuk mengambil perbaikan keamanan tanpa mengganggu beban kerja: Anda hanya dapat mengupgrade node bidang kontrol (dan node load balancer) untuk menerapkan perbaikan kerentanan Kubernetes tanpa mengganggu kumpulan node pekerja Anda.

  • Untuk mengonfirmasi pengoperasian yang benar pada subset node pekerja yang telah diupgrade sebelum mengupgrade semua node pekerja: Anda dapat mengupgrade kumpulan node pekerja secara selektif untuk memastikan bahwa beban kerja berjalan dengan benar pada kumpulan node yang diupgrade sebelum mengupgrade kumpulan node lainnya.

  • Untuk mengurangi masa pemeliharaan: Mengupgrade cluster besar dapat menghabiskan waktu dan sulit untuk memprediksi secara akurat kapan upgrade akan selesai. Waktu upgrade cluster sebanding dengan jumlah node yang diupgrade. Mengurangi jumlah node yang diupgrade dengan mengecualikan kumpulan node akan mengurangi waktu upgrade. Anda melakukan upgrade beberapa kali, tetapi masa pemeliharaan yang lebih kecil dan lebih dapat diprediksi dapat membantu penjadwalan.

Untuk aturan pembuatan versi guna mengupgrade kumpulan node pekerja secara selektif, lihat Aturan pembuatan versi kumpulan node dalam Siklus proses dan tahap upgrade cluster.

Upgrade bidang kontrol cluster Anda dan kumpulan node yang dipilih

Untuk mengupgrade kumpulan node pekerja secara selektif pada upgrade cluster awal:

  1. Untuk kumpulan node pekerja yang ingin Anda sertakan dalam upgrade cluster, lakukan salah satu perubahan berikut pada spesifikasi NodePool:

    • Tetapkan anthosBareMetalVersion di spesifikasi NodePool ke versi upgrade target cluster.
    • Hapus kolom anthosBareMetalVersion dari spesifikasi NodePool atau setel ke string kosong. Secara default, kumpulan node pekerja disertakan dalam upgrade cluster.
  2. Untuk kumpulan node pekerja yang ingin Anda kecualikan dari upgrade, tetapkan anthosBareMetalVersion ke versi cluster saat ini (pra-upgrade):

  3. Lanjutkan proses upgrade seperti yang dijelaskan di Memulai upgrade cluster.

    Operasi upgrade cluster akan mengupgrade node berikut:

    • Node bidang kontrol cluster.
    • Kumpulan node load balancer, jika cluster Anda menggunakan satu (spec.loadBalancer.nodePoolSpec). Secara default, node load balancer dapat menjalankan beban kerja reguler. Anda tidak dapat mengupgrade kumpulan node load balancer secara selektif, kumpulan node tersebut selalu disertakan dalam upgrade cluster awal.
    • Kumpulan node pekerja yang belum Anda kecualikan dari upgrade.

Misalnya, anggaplah cluster Anda menggunakan versi 1.15.0 dan memiliki dua kumpulan node pekerja: wpool01 dan wpool02. Selain itu, misalkan Anda ingin mengupgrade bidang kontrol dan wpool01 ke 1.16.7, tetapi Anda ingin wpool02 tetap berada di versi 1.15.0.

Cuplikan file konfigurasi cluster berikut menunjukkan cara memodifikasi konfigurasi cluster untuk mendukung upgrade sebagian ini:

...
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: user001
  namespace: cluster-user001
spec:
  type: user
  profile: default
  anthosBareMetalVersion: 1.16.7
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: wpool01
  namespace: cluster-user001
spec:
  clusterName: user001
  anthosBareMetalVersion: 1.16.7
  nodes:
  - address:  10.200.0.1
  - address:  10.200.0.2
  - address:  10.200.0.3
  ...
  - address:  10.200.0.8

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: wpool02
  namespace: cluster-user001
spec:
  clusterName: user001
  anthosBareMetalVersion: 1.15.0
  nodes:
  - address:  10.200.1.1
  - address:  10.200.1.2
  - address:  10.200.1.3
  ...
  - address:  10.200.1.12

Mengupgrade kumpulan node ke versi cluster saat ini

Jika telah mengecualikan kumpulan node dari upgrade cluster, Anda dapat menjalankan upgrade cluster yang membawanya ke versi cluster target. Kumpulan node pekerja yang telah dikecualikan dari upgrade cluster memiliki kolom anthosBareMetalVersion dalam spesifikasi NodePool-nya yang ditetapkan ke versi cluster sebelumnya (pra-upgrade).

Untuk meningkatkan kumpulan node pekerja ke versi cluster saat ini yang telah diupgrade:

  1. Edit spesifikasi NodePool dalam file konfigurasi cluster untuk kumpulan node pekerja yang ingin Anda berikan ke versi cluster saat ini. Tetapkan anthosBareMetalVersion ke versi cluster saat ini (pasca-upgrade).

    Jika beberapa kumpulan node worker dipilih untuk upgrade, nilai spec.nodePoolUpgradeStrategy.concurrentNodePools dalam spesifikasi cluster akan menentukan jumlah kumpulan node yang diupgrade secara paralel, jika ada. Jika tidak ingin mengupgrade kumpulan node pekerja secara serentak, pilih satu kumpulan node dalam satu waktu untuk melakukan upgrade.

  2. Lanjutkan proses upgrade seperti yang dijelaskan di Memulai upgrade cluster.

    Operasi upgrade cluster hanya mengupgrade kumpulan node pekerja yang sebelumnya dikecualikan yang anthosBareMetalVersion-nya telah Anda tetapkan ke versi cluster saat ini yang diupgrade.

Misalnya, Anda telah mengupgrade cluster ke versi 1.16.7, tetapi kumpulan node wpool02 masih dalam cluster yang lama sebelum upgrade versi 1.15.0. Workload berjalan dengan benar di kumpulan node yang diupgrade, wpool01, jadi sekarang Anda juga ingin memindahkan wpool02 ke versi cluster saat ini. Untuk mengupgrade wpool02, Anda dapat menghapus kolom anthosBareMetalVersion atau menetapkan nilainya ke string kosong.

Cuplikan file konfigurasi cluster berikut menunjukkan cara memodifikasi konfigurasi cluster untuk mendukung upgrade sebagian ini:

...
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: user001
  namespace: cluster-user001
spec:
  type: user
  profile: default
  anthosBareMetalVersion: 1.16.7
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: wpool01
  namespace: cluster-user001
spec:
  clusterName: user001
  anthosBareMetalVersion: 1.16.7
  nodes:
  - address:  10.200.0.1
  - address:  10.200.0.2
  - address:  10.200.0.3
  ...
  - address:  10.200.0.8

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: wpool02
  namespace: cluster-user001
spec:
  clusterName: user001
  anthosBareMetalVersion: ""
  nodes:
  - address:  10.200.1.1
  - address:  10.200.1.2
  - address:  10.200.1.3
  ...
  - address:  10.200.1.12

Upgrade paralel

Pada upgrade cluster default yang umum, setiap node cluster diupgrade secara berurutan, satu demi satu. Bagian ini menunjukkan cara mengonfigurasi kumpulan node pekerja dan cluster agar beberapa node diupgrade secara paralel saat Anda mengupgrade cluster. Mengupgrade node secara paralel akan mempercepat upgrade cluster secara signifikan, terutama untuk cluster yang memiliki ratusan node.

Ada dua strategi upgrade paralel yang dapat Anda gunakan untuk mempercepat upgrade cluster:

  • Upgrade node serentak: Anda dapat mengonfigurasi kumpulan node pekerja sehingga beberapa node diupgrade secara paralel. Upgrade node paralel dikonfigurasi dalam spesifikasi NodePool (spec.upgradeStrategy.parallelUpgrade) dan hanya node dalam kumpulan node pekerja yang dapat diupgrade secara paralel. Node di bidang kontrol atau kumpulan node load balancer hanya dapat diupgrade satu per satu. Untuk informasi selengkapnya, lihat Strategi upgrade node.

  • Upgrade kumpulan node serentak: Anda dapat mengonfigurasi cluster agar beberapa kumpulan node diupgrade secara paralel. Hanya kumpulan node pekerja yang dapat diupgrade secara paralel. Kumpulan node bidang kontrol dan load balancer hanya dapat diupgrade satu per satu.

Strategi upgrade node

Anda dapat mengonfigurasi kumpulan node pekerja agar beberapa node melakukan upgrade secara serentak (concurrentNodes). Anda juga dapat menetapkan batas minimum untuk jumlah node yang dapat menjalankan beban kerja selama proses upgrade (minimumAvailableNodes). Konfigurasi ini dibuat dalam spesifikasi NodePool. Untuk mengetahui informasi selengkapnya tentang kolom ini, lihat Referensi kolom konfigurasi cluster.

Strategi upgrade node hanya berlaku untuk kumpulan node pekerja. Anda tidak dapat menentukan strategi upgrade node untuk kumpulan node load balancer atau bidang kontrol. Selama upgrade cluster, node di bidang kontrol dan node load balancer melakukan upgrade secara berurutan, satu per satu. Kumpulan node bidang kontrol dan kumpulan node load balancer ditentukan dalam spesifikasi Cluster (controlPlane.nodePoolSpec.nodes dan loadBalancer.nodePoolSpec.nodes).

Saat Anda mengonfigurasi upgrade paralel untuk node, perhatikan batasan berikut:

  • Nilai concurrentNodes tidak boleh melebihi 50 persen dari jumlah node dalam kumpulan node, atau angka tetap 15, mana saja yang lebih kecil. Misalnya, jika kumpulan node Anda memiliki 20 node, Anda tidak dapat menetapkan nilai yang lebih besar dari 10. Jika kumpulan node Anda memiliki 100 node, nilai maksimum yang dapat Anda tentukan adalah 15.

  • Saat Anda menggunakan concurrentNodes bersama dengan minimumAvailableNodes, nilai gabungan tidak boleh melebihi jumlah total node dalam kumpulan node. Misalnya, jika kumpulan node Anda memiliki 20 node dan minimumAvailableNodes ditetapkan ke 18, concurrentNodes tidak boleh melebihi 2. Demikian pula, jika concurrentNodes ditetapkan ke 10, minimumAvailableNodes tidak boleh melebihi 10.

Contoh berikut menunjukkan kumpulan node pekerja np1 dengan 10 node. Pada upgrade, node mengupgrade 5 sekaligus dan minimal 4 node harus tetap tersedia agar upgrade dapat dilanjutkan:

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: np1
  namespace: cluster-cluster1
spec:
  clusterName: cluster1
  nodes:
  - address:  10.200.0.1
  - address:  10.200.0.2
  - address:  10.200.0.3
  - address:  10.200.0.4
  - address:  10.200.0.5
  - address:  10.200.0.6
  - address:  10.200.0.7
  - address:  10.200.0.8
  - address:  10.200.0.9
  - address:  10.200.0.10 
  upgradeStrategy:
    parallelUpgrade:
      concurrentNodes: 5
      minimumAvailableNodes: 4 

Strategi upgrade kumpulan node

Anda dapat mengonfigurasi cluster agar beberapa kumpulan node pekerja diupgrade secara paralel. Kolom Boolean nodePoolUpgradeStrategy.concurrentNodePools dalam spesifikasi cluster menentukan apakah akan mengupgrade semua kumpulan node pekerja untuk cluster secara serentak atau tidak. Secara default (1), kumpulan node diupgrade secara berurutan, satu demi satu. Jika Anda menetapkan concurrentNodePools ke 0, setiap kumpulan node pekerja di cluster akan diupgrade secara paralel.

Kumpulan node bidang kontrol dan load balancing tidak terpengaruh oleh setelan ini. Kumpulan node ini selalu diupgrade secara berurutan, satu per satu. Kumpulan node bidang kontrol dan kumpulan node load balancer ditentukan dalam spesifikasi Cluster (controlPlane.nodePoolSpec.nodes dan loadBalancer.nodePoolSpec.nodes).

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  ...
  nodePoolUpgradeStrategy:
    concurrentNodePools: 0
  ...

Cara melakukan upgrade paralel

Bagian ini menjelaskan cara mengonfigurasi cluster dan kumpulan node pekerja untuk upgrade paralel.

Untuk melakukan upgrade paralel kumpulan node pekerja dan node dalam kumpulan node pekerja, lakukan hal berikut:

  1. Tambahkan bagian upgradeStrategy ke spesifikasi NodePool.

    Anda dapat menerapkan manifes ini secara terpisah atau sebagai bagian dari file konfigurasi cluster saat mengupdate cluster.

    Berikut contohnya:

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: np1
      namespace: cluster-ci-bf8b9aa43c16c47
    spec:
      clusterName: ci-bf8b9aa43c16c47
      nodes:
      - address:  10.200.0.1
      - address:  10.200.0.2
      - address:  10.200.0.3
      ...
      - address:  10.200.0.30
      upgradeStrategy:
        parallelUpgrade:
          concurrentNodes: 5
          minimumAvailableNodes: 10
    

    Dalam contoh ini, nilai kolom concurrentNodes adalah 5, yang berarti 5 node diupgrade secara paralel. Kolom minimumAvailableNodes ditetapkan ke 10, yang berarti setidaknya 10 node harus tetap tersedia untuk beban kerja selama upgrade.

  2. Tambahkan bagian nodePoolUpgradeStrategy ke spesifikasi Cluster dalam file konfigurasi cluster.

    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-user001
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user001
      namespace: cluster-user001
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: 1.16.7
      ...
      nodePoolUpgradeStrategy:
        concurrentNodePools: 0
      ...
    

    Dalam contoh ini, kolom concurrentNodePools disetel ke 0, yang berarti semua kumpulan node pekerja melakukan upgrade secara serentak selama upgrade cluster. Strategi upgrade untuk node dalam node pool ditentukan dalam spesifikasi NodePool.

  3. Upgrade cluster seperti yang dijelaskan di bagian Mengupgrade cluster admin, mandiri, hybrid, atau pengguna sebelumnya.

Nilai default upgrade paralel

Upgrade paralel dinonaktifkan secara default dan kolom yang terkait dengan upgrade paralel dapat diubah. Anda dapat menghapus kolom atau menetapkannya ke nilai default kapan saja untuk menonaktifkan fitur sebelum upgrade berikutnya.

Tabel berikut mencantumkan kolom upgrade paralel dan nilai defaultnya:

Kolom Nilai default Arti
nodePoolUpgradeStrategy.concurrentNodePools (Spesifikasi cluster) 1 Upgrade kumpulan node pekerja secara berurutan, satu demi satu.
upgradeStrategy.parallelUpgrade.concurrentNodes (Spesifikasi NodePool) 1 Upgrade node secara berurutan, satu demi satu.
upgradeStrategy.parallelUpgrade.minimumAvailableNodes (Spesifikasi NodePool) Nilai minimumAvailableNodes default bergantung pada nilai concurrentNodes.
  • Jika Anda tidak menentukan concurrentNodes, minimumAvailableNodes secara default adalah 2/3 dari ukuran kumpulan node.
  • Jika Anda menentukan concurrentNodes, maka minimumAvailableNodes secara default adalah ukuran kumpulan node dikurangi concurrentNodes.
Upgrade terhenti setelah minimumAvailableNodes tercapai dan hanya berlanjut setelah jumlah node yang tersedia lebih dari minimumAvailableNodes.

Memulai upgrade cluster

Bagian ini berisi petunjuk untuk mengupgrade cluster.

bmctl

Saat mendownload dan menginstal bmctl versi baru, Anda dapat mengupgrade cluster admin, hybrid, mandiri, dan pengguna yang dibuat dengan versi sebelumnya. Untuk versi bmctl tertentu, cluster dapat diupgrade ke versi yang sama saja.

  1. Download bmctl terbaru seperti yang dijelaskan dalam GKE pada download Bare Metal.

  2. Update anthosBareMetalVersion di file konfigurasi cluster ke versi target upgrade.

    Versi target upgrade harus cocok dengan versi file bmctl yang didownload. Cuplikan file konfigurasi cluster berikut menunjukkan kolom anthosBareMetalVersion yang diupdate ke versi terbaru:

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      type: admin
      # Anthos cluster version.
      anthosBareMetalVersion: 1.16.7
    
  3. Gunakan perintah bmctl upgrade cluster untuk menyelesaikan upgrade:

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang akan diupgrade.
    • ADMIN_KUBECONFIG: jalur ke file kubeconfig cluster admin.

    Operasi upgrade cluster menjalankan pemeriksaan preflight untuk memvalidasi status cluster dan kondisi node. Upgrade cluster tidak akan dilanjutkan jika pemeriksaan preflight gagal. Untuk mengetahui informasi pemecahan masalah, baca Memecahkan masalah penginstalan atau upgrade cluster.

    Setelah semua komponen cluster berhasil diupgrade, operasi upgrade cluster akan melakukan health check cluster. Langkah terakhir ini memverifikasi bahwa cluster berada dalam kondisi operasi yang baik. Jika cluster tidak lulus semua health check, cluster akan terus berjalan hingga lulus. Jika semua health check lulus, upgrade akan berhasil diselesaikan.

    Untuk mengetahui informasi selengkapnya tentang urutan peristiwa untuk upgrade cluster, lihat Siklus proses dan tahap upgrade cluster.

kubectl

Untuk mengupgrade cluster dengan kubectl, lakukan langkah-langkah berikut:

  1. Edit file konfigurasi cluster untuk menetapkan anthosBareMetalVersion ke versi target upgrade.

  2. Untuk memulai upgrade, jalankan perintah berikut:

    kubectl apply -f CLUSTER_CONFIG_PATH
    

    Ganti CLUSTER_CONFIG_PATH dengan jalur ke file konfigurasi cluster yang diedit.

Seperti pada proses upgrade dengan bmctl, pemeriksaan preflight dijalankan sebagai bagian dari upgrade cluster untuk memvalidasi status cluster dan kondisi node. Jika pemeriksaan preflight gagal, upgrade cluster akan dihentikan. Untuk memecahkan masalah kegagalan, periksa cluster dan log terkait, karena tidak ada cluster bootstrap yang dibuat. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah penginstalan atau upgrade cluster.

Meskipun Anda tidak memerlukan versi terbaru bmctl untuk mengupgrade cluter dengan kubectl, sebaiknya Anda mendownload bmctl terbaru. Anda memerlukan bmctl untuk melakukan tugas-tugas lainnya, seperti health check dan pencadangan, untuk memastikan cluster Anda tetap berfungsi dengan baik.