Bermigrasi dari load balancer Seesaw ke MetalLB

Dokumen ini menunjukkan cara bermigrasi dari load balancer Seesaw ke Load balancer MetalLB.

Penggunaan MetalLB memiliki beberapa manfaat dibandingkan dengan opsi load balancing.

1.28 dan lebih tinggi: GA

1.16: Pratinjau

Catatan tentang periode nonaktif

Terdapat periode nonaktif workload selama migrasi. Catatan berikut hanya berlaku ke cluster admin non-ketersediaan tinggi (non-HA) karena beban SeeSaw tidak mendukung cluster admin HA.

  • Saat memigrasikan cluster admin:

    • Ada periode nonaktif bidang kontrol untuk cluster pengguna kubeception karena controlPlaneVIP dimigrasikan. Periode nonaktif harus kurang dari 10 menit, tetapi durasi periode nonaktif bergantung pada infrastruktur Anda.

    • Terjadi periode nonaktif untuk bidang kontrol cluster admin sebagai master admin node harus dibuat ulang dengan controlPlaneVIP dikaitkan langsung ke VM. Periode nonaktif seharusnya kurang dari 20 menit, tetapi durasi periode nonaktif bergantung pada infrastruktur Anda.

  • Saat memigrasikan cluster pengguna, ada pemadaman layanan untuk VIP setelah Load balancer jungkat-jungkit dimatikan dan sebelum Pod MetalLB muncul. Ini umumnya membutuhkan waktu sekitar satu menit.

Migrasi cluster pengguna

Di file konfigurasi cluster pengguna Anda, pilih node pool, lalu tetapkan enableLoadBalancer ke true:

nodePools:
- name: pool-1
  replicas: 3
  enableLoadBalancer: true

Update cluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur kubeconfig cluster admin file

  • USER_CLUSTER_CONFIG: jalur konfigurasi cluster pengguna file

Selanjutnya, hapus bagian Seesaw dari file, dan tambahkan bagian MetalLB.

Kemudian, update lagi cluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Pastikan komponen MetalLB berhasil dijalankan:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pods \
    --namespace kube-system --selector app=metallb

Output menunjukkan Pod untuk pengontrol dan speaker MetalLB. Contoh:

metallb-controller-744884bf7b-rznr9   1/1     Running
metallb-speaker-6n8ws                 1/1     Running
metallb-speaker-nb52z                 1/1     Running
metallb-speaker-rq4pp                 1/1     Running

Setelah migrasi berhasil, hapus VM Seesaw secara manual, yang sudah dimatikan untuk cluster pengguna. Anda dapat menemukan nama {i>Seesaw VM<i} di Bagian vmnames dari file seesaw-for-[USERCLUSTERNAME].yaml di direktori konfigurasi.

Contoh: Cluster pengguna, alamat IP statis

Misalkan Anda memiliki cluster pengguna yang menggunakan alamat IP statis untuk cluster-nya node. Misalkan juga cluster memiliki dua Service dengan jenis LoadBalancer, dan alamat eksternal untuk Layanan tersebut adalah 172.16.21.41 dan 172.16.21.45.

Sesuaikan file konfigurasi cluster pengguna sebagai berikut:

  • Tetap gunakan bagian network.hostConfig.
  • Tetapkan loadBalancer.kind ke MetalLB.
  • Hapus bagian loadBalancer.seesaw.
  • Tambahkan bagian loadBalancer.metalLB.

Contoh:

network:
  hostConfig:
    dnsServers:
    - "172.16.255.1"
    - "172.16.255.2"
    ntpServers:
    - "216.239.35.0"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.30"
    ingressVIP: "172.16.20.31"
  kind: MetalLB Seesaw
  seesaw:
    ipBlockFilePath: "user-cluster-1-ipblock.yaml"
    vrid: 1
    masterIP: ""
    cpus: 4
    memoryMB: 3072
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
      - "172.16.20.31/32"
      - "172.16.20.40 - 172.16.21.49"
  

Poin utama dari contoh sebelumnya:

  • Meskipun cluster tersebut tidak lagi menggunakan load balancer Seesaw, Bagian network.hostConfig diperlukan karena node cluster menggunakan IP statis untuk alamat internal dan eksternal.

  • Nilai ingressVIP muncul di kumpulan alamat MetalLB.

  • Alamat IP eksternal, 172.16.21.41 dan 172.16.21.45, untuk IP Layanan jenis LoadBalancer disertakan dalam kumpulan alamat MetalLB.

Contoh: cluster pengguna kubeception, DHCP

Misalkan Anda memiliki cluster pengguna yang menggunakan DHCP untuk node clusternya. Selain itu, misalkan cluster memiliki dua Layanan jenis LoadBalancer, dan alamat eksternal untuk Layanan tersebut adalah 172.16.21.61 dan 172.16.21.65.

Sesuaikan file konfigurasi cluster pengguna sebagai berikut:

  • Hapus bagian network.hostConfig.
  • Tetapkan loadBalancer.kind ke MetalLB.
  • Hapus bagian loadBalancer.seesaw.
  • Tambahkan bagian loadBalancer.metalLB.

Contoh:

enableControlplaneV2: false
network:
  hostConfig:
    dnsServers:
    - "172.16.255.1"
    - "172.16.255.2"
    ntpServers:
    - "216.239.35.0"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.50"
    ingressVIP: "172.16.20.51"
  kind: MetalLB Seesaw
  seesaw:
    ipBlockFilePath: "user-cluster-2-ipblock.yaml"
    vrid: 1
    masterIP: ""
    cpus: 4
    memoryMB: 3072
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
      - "172.16.20.51/32"
      - "172.16.20.60 - 172.16.21.69"
  

Poin utama dari contoh sebelumnya:

  • Cluster tersebut tidak akan lagi menggunakan load balancer Seesaw, sedangkan tidak menggunakan alamat IP statis untuk node clusternya. Jadi network.hostConfig bagian tidak diperlukan.

  • Nilai ingressVIP muncul di kumpulan alamat MetalLB.

  • Alamat IP eksternal, 172.16.21.61 dan 172.16.21.65, untuk IP Layanan jenis LoadBalancer disertakan dalam kumpulan alamat MetalLB.

Contoh: Cluster pengguna Controlplane V2, DHCP

Misalkan Anda memiliki cluster pengguna yang mengaktifkan Controlplane V2, dan menggunakan DHCP untuk worker node-nya. Misalkan juga cluster memiliki dua jenis Service LoadBalancer, dan alamat eksternal untuk Layanan tersebut adalah 172.16.21.81 dan 172.16.21.85.

Sesuaikan file konfigurasi cluster pengguna sebagai berikut:

  • Tetap gunakan bagian network.hostconfig.
  • Tetapkan loadBalancer.kind ke MetalLB.
  • Hapus bagian loadBalancer.seesaw.
  • Tambahkan bagian loadBalancer.metalLB.

Contoh:

enableControlplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "172.16.255.1"
    - "172.16.255.2"
    ntpServers:
    - "216.239.35.0"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.70"
    ingressVIP: "172.16.20.71"
  kind: MetalLB Seesaw
  seesaw:
    ipBlockFilePath: "user-cluster-2-ipblock.yaml"
    vrid: 1
    masterIP: ""
    cpus: 4
    memoryMB: 3072
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
      - "172.16.20.71/32"
      - "172.16.20.80 - 172.16.21.89"
  

Poin utama dari contoh sebelumnya:

  • Cluster tidak akan lagi menggunakan alamat IP statis untuk worker node, tetapi {i>router<i} akan menggunakan alamat IP statis untuk {i>node<i} bidang kontrol. Jadi, Bagian network.hostConfig wajib diisi.

  • Nilai ingressVIP muncul di kumpulan alamat MetalLB.

  • Alamat IP eksternal, 172.16.21.81 dan 172.16.21.85, untuk IP Layanan jenis LoadBalancer disertakan dalam kumpulan alamat MetalLB.

Migrasi cluster admin

Di file konfigurasi cluster admin Anda, setel loadBalancer.kind ke MetalLB, dan hapus bagian loadBalancer.seesaw.

Update cluster:

gkectl update admin --kubeconfig  ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur kubeconfig cluster admin file

  • ADMIN_CLUSTER_CONFIG: jalur konfigurasi cluster admin file

Pastikan komponen metallb berhasil berjalan:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
    --namespace kube-system --selector app=metallb

Output menunjukkan Pod untuk pengontrol dan speaker MetalLB. Contoh:

metallb-controller-744884bf7b-rznr9   1/1     Running
metallb-speaker-6n8ws                 1/1     Running
metallb-speaker-nb52z                 1/1     Running
metallb-speaker-rq4pp                 1/1     Running

Setelah migrasi berhasil, hapus VM Seesaw secara manual, yang sudah dimatikan, untuk cluster admin. Anda dapat menemukan nama {i>Seesaw VM<i} di Bagian vmnames dari file seesaw-for-gke-admin.yaml di direktori konfigurasi.

Contoh: Cluster admin, alamat IP statis

Misalkan Anda memiliki cluster admin yang menggunakan alamat IP statis untuk cluster-nya node.

Sesuaikan file konfigurasi cluster admin sebagai berikut:

  • Tetap gunakan bagian network.hostConfig.
  • Tetapkan loadBalancer.kind ke MetalLB.
  • Hapus bagian loadBalancer.seesaw.

Contoh:

network:
  hostConfig:
    dnsServers:
    - "172.16.255.1"
    - "172.16.255.2"
    ntpServers:
    - "216.239.35.0"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.30"
  kind: MetalLB Seesaw
  seesaw:
    ipBlockFilePath: "user-cluster-1-ipblock.yaml"
    vrid: 1
    masterIP: ""
    cpus: 4
    memoryMB: 3072
  

Poin utama dari contoh sebelumnya:

  • Meskipun cluster tersebut tidak lagi menggunakan load balancer Seesaw, Bagian network.hostConfig diperlukan karena node cluster menggunakan IP statis untuk alamat internal dan eksternal.

Contoh: Cluster Admin, DHCP

Misalkan Anda memiliki cluster admin yang menggunakan DHCP untuk cluster-nya node.

Sesuaikan file konfigurasi cluster admin sebagai berikut:

  • Hapus bagian network.hostConfig.
  • Tetapkan loadBalancer.kind ke MetalLB.
  • Hapus bagian loadBalancer.seesaw.

Contoh:

network:
  hostConfig:
    dnsServers:
    - "172.16.255.1"
    - "172.16.255.2"
    ntpServers:
    - "216.239.35.0"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.30"
  kind: MetalLB Seesaw
  seesaw:
    ipBlockFilePath: "user-cluster-1-ipblock.yaml"
    vrid: 1
    masterIP: ""
    cpus: 4
    memoryMB: 3072
  

Poin utama dari contoh sebelumnya:

  • Cluster tersebut tidak akan lagi menggunakan load balancer Seesaw, sedangkan tidak menggunakan alamat IP statis untuk node clusternya. Jadi network.hostConfig bagian tidak diperlukan.

Pemecahan masalah

Jika gkectl update gagal selama migrasi cluster pengguna, dan Pod metallb akan tidak berjalan di cluster pengguna, aktifkan VM Seesaw cluster pengguna secara manual. Tindakan ini akan memulihkan traffic ke VIP yang saat ini digunakan. Namun, VIP yang baru dibuat mungkin tidak disalurkan oleh Seesaw VM jika Pod load-balancer-seesaw tidak sedang berjalan. Jika demikian, buat tiket dukungan.

Jika gkectl update gagal selama migrasi cluster admin, dan Pod metallb tidak berjalan di cluster admin, aktifkan secara manual cluster admin Seesaw atau VM. Tindakan ini dapat mengizinkan traffic ke VIP bidang kontrol yang saat ini digunakan bagi pengguna cluster agar berfungsi kembali. Namun, VIP untuk bidang kontrol cluster admin itu sendiri mungkin tidak berfungsi. Dalam hal ini, edit file kubeconfig admin cluster untuk langsung menggunakan alamat IP node bidang kontrol cluster admin.

Selain itu, di namespace kube-system, ubah jenis Layanan kube-apiserver dari ClusterIP hingga LoadBalancer. Jika perlu, buat tiket dukungan.