Mengupgrade node pool

Mengupgrade bidang kontrol dan node pool worker secara terpisah di cluster pengguna Google Distributed Cloud software only for VMware memungkinkan Anda memvalidasi kompatibilitas workload pada node pool individual dan menyebarkan upgrade di masa pemeliharaan yang lebih singkat.

Dokumen ini ditujukan untuk admin IT dan Operator yang mengelola siklus proses infrastruktur teknologi yang mendasarinya. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud , lihat Peran dan tugas pengguna GKE umum. Sebelum memulai, pastikan Anda memahami Ringkasan upgrade, Aturan versi upgrade, Praktik terbaik upgrade, dan Mengupgrade cluster.

Batasan

Mengupgrade node pool secara terpisah dari bidang kontrol memiliki batasan berikut:

  • Fitur ini didukung untuk node pool Ubuntu dan Container-Optimized OS, tetapi tidak untuk node pool Windows.

  • Fitur ini tidak tersedia saat mengupgrade cluster non-lanjutan ke cluster lanjutan. Cluster non-lanjutan akan otomatis diupgrade ke cluster lanjutan di versi 1.33.

  • Versi 1.31: fitur ini tidak tersedia di cluster lanjutan.

  • Versi 1.32 dan yang lebih baru: fitur ini tersedia di cluster lanjutan.

  • Versi node pool load balancer harus sama dengan versi cluster. Mengupgrade node pool load balancer (node pool dengan enableLoadBalancer: true) secara terpisah dari bidang kontrol atau memiliki penyimpangan versi tidak didukung.

Mengapa mengupgrade bidang kontrol dan node pool secara terpisah?

Dalam situasi tertentu, Anda mungkin ingin mengupgrade beberapa, tetapi tidak semua, node pool worker di cluster pengguna:

  • Anda dapat mengupgrade bidang kontrol terlebih dahulu dan node pool yang memiliki traffic ringan atau menjalankan workload yang paling tidak penting. Setelah memverifikasi bahwa workload Anda berjalan dengan benar pada versi baru, Anda dapat mengupgrade node pool tambahan hingga semua node pool diupgrade.

  • Alih-alih menggunakan satu masa pemeliharaan besar untuk upgrade cluster, Anda dapat mengupgrade cluster di beberapa masa pemeliharaan. Untuk mengetahui informasi tentang cara memperkirakan waktu untuk masa pemeliharaan, lihat Memperkirakan komitmen waktu dan merencanakan masa pemeliharaan.

  • Anda dapat melewati versi minor saat mengupgrade node pool untuk mengurangi jumlah upgrade yang diperlukan agar tetap menggunakan versi yang didukung, sehingga menghemat waktu dan mengurangi gangguan workload. Untuk mengetahui informasi selengkapnya, lihat Melewati versi saat mengupgrade node pool.

Sebelum memulai

  1. Di versi 1.29 dan yang lebih baru, pemeriksaan preflight sisi server diaktifkan secara default. Pastikan untuk meninjau aturan firewall Anda untuk melakukan perubahan yang diperlukan.

  2. Untuk mengupgrade ke versi 1.28 dan yang lebih baru, Anda harus mengaktifkan kubernetesmetadata.googleapis.com dan memberikan peran IAM kubernetesmetadata.publisher ke akun layanan logging-monitoring. Untuk mengetahui detailnya, lihat Persyaratan Google API dan Identity and Access Management (IAM).

  3. Pastikan versi cluster saat ini adalah versi 1.14 atau yang lebih tinggi.

Mengupgrade bidang kontrol dan node pool yang dipilih

Mengupgrade bidang kontrol cluster pengguna secara terpisah dari node pool worker didukung menggunakan gkectl, Google Cloud CLI, dan Terraform. Anda hanya dapat menggunakan Terraform untuk upgrade jika Anda membuat cluster pengguna menggunakan Terraform.

gkectl

  1. Tentukan versi sumber dan versi target dalam variabel placeholder berikut. Semua versi harus berupa nomor versi lengkap dalam format x.y.z-gke.N seperti 1.16.11-gke.25.

    Versi Deskripsi
    SOURCE_VERSION Versi cluster saat ini.
    TARGET_VERSION Pilih versi target. Pilih patch yang direkomendasikan dari versi minor target.
  2. Upgrade workstation admin Anda ke versi target. Tunggu pesan yang menunjukkan bahwa upgrade berhasil.

  3. Impor OS image yang sesuai ke vSphere:

    gkectl prepare \
      --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Ganti ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster admin Anda.

  4. Buat perubahan berikut dalam file konfigurasi cluster pengguna:

    • Tetapkan kolom gkeOnPremVersion ke versi target, TARGET_VERSION.

    • Untuk setiap node pool yang ingin Anda upgrade, tetapkan kolom nodePools[i].gkeOnPremVersion ke string kosong.

      • Di versi 1.28 dan yang lebih baru, Anda dapat mempercepat upgrade node pool dengan menetapkan kolom nodePools[i].updateStrategy.rollingUpdate.maxSurge ke nilai bilangan bulat yang lebih besar dari 1. Saat Anda mengupgrade node dengan maxSurge, beberapa node akan diupgrade dalam waktu yang sama dengan waktu yang diperlukan untuk mengupgrade satu node.
    • Untuk setiap node pool yang tidak ingin Anda upgrade, tetapkan nodePools[i].gkeOnPremVersion ke versi sumber, SOURCE_VERSION. Perhatikan bahwa Anda tidak dapat menahan node pool load balancer (node pool dengan enableLoadBalancer: true); versinya harus cocok dengan versi cluster.

    Contoh berikut menunjukkan bagian dari file konfigurasi cluster pengguna. Ini menentukan bahwa bidang kontrol dan pool-1 akan diupgrade ke TARGET_VERSION, tetapi pool-2 akan tetap di SOURCE_VERSION.

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: SOURCE_VERSION
      ...
    
  5. Upgrade bidang kontrol dan node pool yang dipilih:

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG_FILE
    

    Ganti USER_CLUSTER_CONFIG dengan jalur file konfigurasi cluster pengguna Anda.

Mengupgrade node pool tambahan

Dengan menggunakan contoh sebelumnya, anggaplah semuanya berfungsi dengan baik di pool-1, dan sekarang Anda ingin mengupgrade pool-2.

  1. Dalam file konfigurasi cluster pengguna, di bagian pool-2, tetapkan gkeOnPremVersion ke string kosong:

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: ""
      ...
    
  2. Jalankan gkectl update cluster untuk menerapkan perubahan:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

gcloud CLI

Mengupgrade cluster pengguna memerlukan beberapa perubahan pada cluster admin. Perintah gcloud container vmware clusters upgrade secara otomatis melakukan hal berikut:

  • Mendaftarkan cluster admin di GKE On-Prem API jika belum terdaftar.

  • Mendownload dan men-deploy paket komponen ke cluster admin. Versi komponen cocok dengan versi yang Anda tentukan untuk upgrade. Komponen ini memungkinkan cluster admin mengelola cluster pengguna pada versi tersebut.

Mengupgrade bidang kontrol

Lakukan langkah berikut untuk mengupgrade bidang kontrol cluster pengguna.

  1. Update komponen gcloud CLI:

    gcloud components update
    
  2. Ubah kebijakan upgrade di cluster:

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --upgrade-policy control-plane-only=True
    

    Ganti kode berikut:

    • USER_CLUSTER_NAME: Nama cluster pengguna yang akan diupgrade.

    • PROJECT_ID: ID project host fleet tempat cluster pengguna menjadi anggota. Ini adalah project yang Anda tentukan saat cluster dibuat. Jika Anda membuat cluster menggunakan gkectl, ini adalah project ID di kolom gkeConnect.projectID dalam file konfigurasi cluster.

    • REGION: Region Google Cloud tempat GKE On-Prem API berjalan dan menyimpan metadatanya. Jika Anda membuat cluster menggunakan klien GKE On-Prem API, ini adalah region yang Anda pilih saat membuat cluster. Jika Anda membuat cluster menggunakan gkectl, ini adalah region yang Anda tentukan saat mendaftarkan cluster di GKE On-Prem API.

  3. Upgrade bidang kontrol cluster:

    gcloud container vmware clusters upgrade USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

    Ganti TARGET_VERSION dengan versi yang akan diupgrade. Pilih patch yang direkomendasikan dari versi minor target.

    Output dari perintah ini mirip dengan berikut ini:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    Dalam contoh output, string operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 adalah OPERATION_ID dari operasi yang berjalan lama. Anda dapat mengetahui status operasi dengan menjalankan perintah berikut di jendela terminal lain:

    gcloud container vmware operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=REGION
    

Mengupgrade node pool

Lakukan langkah-langkah berikut untuk mengupgrade node pool setelah bidang kontrol cluster pengguna diupgrade:

  1. Dapatkan daftar node pool di cluster pengguna:

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. Untuk setiap node pool yang ingin Anda upgrade, jalankan perintah berikut:

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

Terraform

  1. Update komponen gcloud CLI:

    gcloud components update
    
  2. Jika Anda belum melakukannya, daftarkan cluster admin di GKE On-Prem API. Setelah cluster didaftarkan di GKE On-Prem API, Anda tidak perlu melakukan langkah ini lagi.

  3. Download komponen versi baru dan deploy di cluster admin:

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=TARGET_VERSION
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_NAME: Nama cluster admin.

    • PROJECT_ID: ID project host fleet tempat cluster pengguna menjadi anggota. Ini adalah project yang Anda tentukan saat cluster dibuat. Jika Anda membuat cluster menggunakan gkectl, ini adalah project ID di kolom gkeConnect.projectID dalam file konfigurasi cluster.

    • REGION: Region Google Cloud tempat GKE On-Prem API berjalan dan menyimpan metadatanya. Jika Anda membuat cluster menggunakan klien GKE On-Prem API, ini adalah region yang Anda pilih saat membuat cluster. Jika Anda membuat cluster menggunakan gkectl, ini adalah region yang Anda tentukan saat mendaftarkan cluster di GKE On-Prem API.

    • TARGET_VERSION: Versi yang akan diupgrade. Pilih patch yang direkomendasikan dari versi minor target.

    Perintah ini mendownload versi komponen yang Anda tentukan di --required-platform-version ke cluster admin, lalu men-deploy komponen. Komponen ini memungkinkan cluster admin mengelola cluster pengguna pada versi tersebut.

  4. Dalam file main.tf yang Anda gunakan untuk membuat cluster pengguna, ubah on_prem_version di resource cluster ke versi baru.

  5. Tambahkan kode berikut ke resource cluster agar hanya bidang kontrol yang diupgrade:

    upgrade_policy {
      control_plane_only = true
    }
    
  6. Lakukan inisialisasi dan buat rencana Terraform:

    terraform init
    

    Terraform menginstal library yang diperlukan, seperti penyedia Google Cloud.

  7. Tinjau konfigurasi dan buat perubahan jika diperlukan:

    terraform plan
    
  8. Terapkan Terraform plan untuk mengupgrade bidang kontrol cluster pengguna:

    terraform apply
    

Mengupgrade node pool

Lakukan langkah-langkah berikut untuk mengupgrade node pool setelah bidang kontrol cluster pengguna diupgrade:

  1. Di main.tf dalam resource untuk setiap node pool yang ingin Anda upgrade, tambahkan kode berikut:

    on_prem_version = "TARGET_VERSION"
    

    Contoh:

    resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" {
    name = "my-nodepool"
    location = "us-west1"
    vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name
    config {
      replicas = 3
      image_type = "ubuntu_containerd"
      enable_load_balancer = false
    }
    on_prem_version = "1.16.0-gke.0"
    }
    
  2. Lakukan inisialisasi dan buat rencana Terraform:

    terraform init
    
  3. Tinjau konfigurasi dan buat perubahan jika diperlukan:

    terraform plan
    
  4. Terapkan Terraform plan untuk mengupgrade node pool:

    terraform apply
    

Pemecahan masalah

Jika mengalami masalah setelah mengupgrade node pool, Anda dapat melakukan roll back ke versi sebelumnya. Untuk mengetahui informasi selengkapnya, lihat Me-roll back node pool setelah upgrade.