Memigrasikan cluster pengguna ke Controlplane V2

Dokumen ini menunjukkan cara memigrasikan cluster pengguna versi 1.29 atau yang lebih baru menggunakan kubeception ke Controlplane V2.

1.29: Pratinjau
1.28: Tidak tersedia
1.16: Tidak tersedia

Tentang bidang kontrol cluster pengguna

Sebelum Google Distributed Cloud versi 1.13, bidang kontrol untuk cluster pengguna berjalan di satu atau beberapa node dalam cluster admin. Bidang kontrol semacam ini disebut sebagai {i>kubeception<i}. Pada versi 1.13, Controlplane V2 diperkenalkan untuk cluster pengguna baru. Jika Controlplane V2 diaktifkan, bidang kontrol untuk cluster pengguna akan berjalan di cluster pengguna itu sendiri.

Manfaat Controlplane V2 meliputi sebagai berikut:

  • Isolasi kegagalan. Kegagalan cluster admin tidak memengaruhi cluster pengguna.

  • Pemisahan operasional. Upgrade cluster admin tidak menyebabkan periode nonaktif untuk cluster pengguna.

  • Pemisahan deployment. Anda dapat menempatkan admin dan cluster pengguna di domain kegagalan atau situs geografis yang berbeda. Misalnya, cluster pengguna di lokasi edge mungkin berada di situs geografis yang berbeda dengan cluster admin.

Persyaratan

Untuk memigrasikan cluster pengguna ke Controlplane V2, cluster pengguna harus memenuhi persyaratan berikut:

  • Cluster pengguna harus versi 1.29 atau yang lebih baru. Cluster admin dan kumpulan node dapat berupa satu atau dua versi minor yang lebih rendah dari cluster pengguna. Jika perlu, upgrade cluster.

  • Cluster pengguna harus mengaktifkan Dataplane V2. Kolom ini tidak dapat diubah, jadi jika Dataplane V2 tidak diaktifkan di cluster, Anda tidak dapat memigrasikannya ke Controlplane V2.

  • Cluster pengguna harus dikonfigurasi untuk menggunakan MetalLB atau load balancer manual. Jika cluster pengguna menggunakan load balancer SeeSaw, Anda dapat memigrasikannya ke MetalLB.

  • Tinjau dokumen perencanaan alamat IP, dan pastikan Anda memiliki cukup alamat IP untuk node bidang kontrol cluster pengguna. Node bidang kontrol memerlukan alamat IP statis, dan Anda memerlukan alamat IP tambahan untuk IP virtual (VIP) bidang kontrol baru.

Memperbarui file konfigurasi cluster pengguna

Buat perubahan berikut pada file konfigurasi cluster pengguna yang ada:

  1. Tetapkan enableControlplaneV2 ke benar (true).

  2. Secara opsional, jadikan bidang kontrol untuk cluster pengguna Controlplane V2 agar sangat tersedia (HA). Untuk beralih dari cluster non-HA ke cluster HA, ubah masterNode.replicas dari 1 ke 3.

  3. Tambahkan alamat IP statis (atau alamat) untuk node bidang kontrol cluster pengguna ke bagian network.controlPlaneIPBlock.ips.

  4. Isi netmask dan gateway di bagian network.controlPlaneIPBlock.

  5. Jika bagian network.hostConfig kosong, isilah.

  6. Jika cluster pengguna menggunakan load balancing manual, konfigurasikan load balancer Anda untuk menyertakan IP node bidang kontrol untuk traffic bidang data:

    • (ingressVIP:80) -> (CP_NODE_IP_ADDRESSES:ingressHTTPNodePort)
    • (ingressVIP:443) -> (CP_NODE_IP_ADDRESSES:ingressHTTPSNodePort)
  7. Perbarui kolom loadBalancer.vips.controlPlaneVIP dengan alamat IP baru untuk VIP bidang kontrol. Perhatikan bahwa alamat IP harus berada di VLAN yang sama dengan IP node bidang kontrol.

  8. Semua kolom sebelumnya tidak dapat diubah, kecuali saat mengupdate cluster untuk migrasi. Pastikan untuk memeriksa kembali semua setelan.

  9. Jalankan gkectl diagnose cluster, dan perbaiki masalah apa pun yang ditemukan perintah tersebut.

    gkectl diagnose cluster --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
          --cluster-name=USER_CLUSTER_NAME

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.

    • CLUSTER_NAME: nama cluster pengguna.

Menyesuaikan konfigurasi load balancer manual

Jika cluster pengguna Anda menggunakan load balancing manual, lakukan langkah-langkah di bagian ini. Jika tidak, lewati bagian ini.

Sama halnya dengan mengonfigurasi load balancer untuk cluster pengguna CPv2, untuk masing-masing dari tiga alamat IP node bidang kontrol baru yang Anda tentukan di bagian network.controlPlaneIPBlock, konfigurasikan pemetaan di load balancer Anda:

  • (ingressVIP:80) -> (NEW_NODE_IP_ADDRESS:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NEW_NODE_IP_ADDRESS:ingressHTTPNodePort)

Mengupdate cluster

Jalankan perintah berikut untuk memigrasikan cluster ke Controlplane V2:

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

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.

  • USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna.

Perintah tersebut melakukan hal berikut:

  1. Buat bidang kontrol cluster baru dengan ControlPlane V2 diaktifkan.

  2. Hentikan bidang kontrol Kubernetes dari cluster kubeception.

  3. Ambil snapshot etcd dari cluster kubeception.

  4. Matikan node bidang kontrol cluster pengguna dari cluster kubeception. Perlu diperhatikan bahwa demi pemulihan kegagalan, yaitu dengan mengembalikan ke cluster kubeception, node tidak akan dihapus sampai migrasi selesai.

  5. Pulihkan data cluster di bidang kontrol baru dengan snapshot dll. yang disebutkan di atas.

  6. Hubungkan node node pool pada cluster kubeception ke bidang kontrol baru, yang dapat diakses dengan controlPlaneVIP baru.

  7. Rekonsiliasi cluster pengguna yang dipulihkan untuk memenuhi status akhir cluster dengan ControlPlane V2 yang diaktifkan.

Notes

  • Selama migrasi, tidak ada periode nonaktif untuk workload cluster pengguna.

  • Selama migrasi, terjadi periode nonaktif untuk bidang kontrol cluster pengguna. Lebih spesifiknya, bidang kontrol tidak tersedia antara langkah 2 dan penyelesaian langkah 6. (Periode nonaktif kurang dari 7 menit berdasarkan pengujian kami, tetapi durasi sebenarnya bergantung pada infrastruktur Anda).

  • Di akhir migrasi, node bidang kontrol cluster pengguna dari cluster kubeception akan dihapus. Jika cluster admin memiliki network.ipMode.type yang disetel ke "statis", Anda dapat mendaur ulang beberapa IP statis yang tidak digunakan dengan menghapusnya dari file konfigurasi cluster admin dan menjalankan gkectl update admin. Anda dapat mencantumkan objek node cluster admin dengan kubectl get nodes -o wide untuk melihat IP yang sedang digunakan.