Dokumen ini menunjukkan cara bermigrasi dari load balancer Seesaw ke load balancer MetalLB untuk versi 1.16 hingga 1.29. Jika cluster Anda menggunakan versi 1.30 atau yang lebih baru, sebaiknya ikuti petunjuk di Merencanakan migrasi cluster ke fitur yang direkomendasikan.
Menggunakan MetalLB memiliki beberapa manfaat dibandingkan dengan opsi load balancing lainnya.
1.28 dan 1.29: GA
1.16: Pratinjau
Untuk memeriksa externalTrafficPolicy
, jalankan perintah berikut:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get svc -A -o yaml | grep "externalTrafficPolicy: Local"
Hubungi Dukungan Google untuk mendapatkan bantuan terkait masalah ini.
Catatan tentang periode nonaktif
Ada periode nonaktif workload selama migrasi. Catatan berikut hanya berlaku untuk cluster admin non-ketersediaan tinggi (non-HA) karena load balancer SeeSaw tidak mendukung cluster admin HA.
Saat memigrasikan cluster admin:
Ada periode nonaktif bidang kontrol untuk cluster pengguna kubeception saat
controlPlaneVIP
dimigrasikan. Waktu nonaktif harus kurang dari 10 menit, tetapi durasi waktu nonaktif bergantung pada infrastruktur Anda.Ada periode nonaktif untuk bidang kontrol cluster admin karena node master admin perlu dibuat ulang dengan
controlPlaneVIP
yang langsung dilampirkan ke VM. Waktu nonaktif harus kurang dari 20 menit, tetapi durasi waktu nonaktif bergantung pada infrastruktur Anda.
Saat memigrasikan cluster pengguna, akan terjadi pemadaman layanan untuk VIP setelah load balancer Seesaw dinonaktifkan dan sebelum Pod MetalLB muncul. Proses ini biasanya memerlukan waktu sekitar satu menit.
Migrasi cluster pengguna
Anda harus memilih kumpulan node dan mengaktifkannya untuk digunakan dengan MetalLB. MetalLB akan di-deploy pada node dalam kumpulan node ini.
Di file konfigurasi cluster pengguna, pilih node pool, dan 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 file kubeconfig cluster admin
USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna
Selanjutnya, hapus bagian Seesaw dari file, dan tambahkan bagian MetalLB.
Kemudian, update cluster lagi:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Pastikan komponen MetalLB berhasil berjalan:
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
dinonaktifkan, untuk cluster pengguna. Anda dapat menemukan nama VM Seesaw di
bagian vmnames
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 node
cluster-nya. Anggap juga bahwa cluster memiliki dua Layanan 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:
- Pertahankan bagian
network.hostConfig
. - Tetapkan
loadBalancer.kind
keMetalLB
. - 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: MetalLBSeesawseesaw: ipBlockFilePath: "user-cluster-1-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072metalLB: addressPools: - name: "address-pool-1" addresses: - "172.16.20.31/32" - "172.16.20.40 - 172.16.21.49"
Poin-poin penting dari contoh sebelumnya:
Meskipun cluster tidak akan lagi menggunakan load balancer Seesaw, bagian
network.hostConfig
diperlukan, karena node cluster menggunakan alamat IP statis.Nilai
ingressVIP
muncul di kumpulan alamat MetalLB.Alamat IP eksternal, 172.16.21.41 dan 172.16.21.45, untuk Layanan yang ada dari jenis
LoadBalancer
disertakan dalam kumpulan alamat MetalLB.
Contoh: cluster pengguna kubeception, DHCP
Misalnya, Anda memiliki cluster pengguna yang menggunakan DHCP untuk node clusternya. Selain itu,
anggaplah 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
keMetalLB
. - 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: MetalLBSeesawseesaw: ipBlockFilePath: "user-cluster-2-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072metalLB: addressPools: - name: "address-pool-1" addresses: - "172.16.20.51/32" - "172.16.20.60 - 172.16.21.69"
Poin-poin penting dari contoh sebelumnya:
Cluster tidak akan lagi menggunakan load balancer Seesaw, dan cluster tidak menggunakan alamat IP statis untuk node clusternya. Jadi, bagian
network.hostConfig
tidak diperlukan.Nilai
ingressVIP
muncul di kumpulan alamat MetalLB.Alamat IP eksternal, 172.16.21.61 dan 172.16.21.65, untuk Layanan yang ada dari jenis
LoadBalancer
disertakan dalam kumpulan alamat MetalLB.
Contoh: Cluster pengguna Controlplane V2, DHCP
Misalnya, Anda memiliki cluster pengguna yang mengaktifkan Controlplane V2, dan menggunakan DHCP
untuk node pekerjanya. Selain itu, anggaplah cluster memiliki dua Layanan jenis LoadBalancer
, dan alamat eksternal untuk Layanan tersebut adalah 172.16.21.81 dan 172.16.21.85.
Sesuaikan file konfigurasi cluster pengguna sebagai berikut:
- Pertahankan bagian
network.hostconfig
. - Tetapkan
loadBalancer.kind
keMetalLB
. - 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: MetalLBSeesawseesaw: ipBlockFilePath: "user-cluster-2-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072metalLB: addressPools: - name: "address-pool-1" addresses: - "172.16.20.71/32" - "172.16.20.80 - 172.16.21.89"
Poin-poin penting dari contoh sebelumnya:
Cluster tidak akan lagi menggunakan alamat IP statis untuk node pekerja, tetapi akan menggunakan alamat IP statis untuk node platform kontrol. Jadi, bagian
network.hostConfig
diperlukan.Nilai
ingressVIP
muncul di kumpulan alamat MetalLB.Alamat IP eksternal, 172.16.21.81 dan 172.16.21.85, untuk Layanan yang ada dari jenis
LoadBalancer
disertakan dalam kumpulan alamat MetalLB.
Migrasi cluster admin
Dalam file konfigurasi cluster admin, tetapkan 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 file kubeconfig cluster admin
ADMIN_CLUSTER_CONFIG: jalur file konfigurasi cluster admin
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
dinonaktifkan, untuk cluster admin. Anda dapat menemukan nama VM Seesaw di
bagian vmnames
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 node cluster-nya.
Sesuaikan file konfigurasi cluster admin sebagai berikut:
- Pertahankan bagian
network.hostConfig
. - Tetapkan
loadBalancer.kind
keMetalLB
. - 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: MetalLBSeesawseesaw: ipBlockFilePath: "user-cluster-1-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072
Poin penting dari contoh sebelumnya:
- Meskipun cluster tidak akan lagi menggunakan load balancer Seesaw, bagian
network.hostConfig
diperlukan, karena node cluster menggunakan alamat IP statis.
Contoh: Cluster admin, DHCP
Misalnya, Anda memiliki cluster admin yang menggunakan DHCP untuk node cluster-nya.
Sesuaikan file konfigurasi cluster admin sebagai berikut:
- Hapus bagian
network.hostConfig
. - Tetapkan
loadBalancer.kind
keMetalLB
. - 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: MetalLBSeesawseesaw: ipBlockFilePath: "user-cluster-1-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072
Poin penting dari contoh sebelumnya:
- Cluster tidak akan lagi menggunakan load balancer Seesaw, dan cluster tidak
menggunakan alamat IP statis untuk node clusternya. Jadi, bagian
network.hostConfig
tidak diperlukan.
Pemecahan masalah
Jika gkectl update
gagal selama migrasi cluster pengguna, dan Pod MetalLB
tidak berjalan di cluster pengguna, aktifkan VM Seesaw cluster pengguna secara manual.
Tindakan ini akan membuat ulang traffic ke VIP yang saat ini digunakan. Namun, VIP yang baru dibuat
mungkin tidak ditayangkan oleh VM Seesaw jika Pod load-balancer-seesaw
tidak
berjalan. Jika demikian, buat tiket dukungan.
Jika gkectl update
gagal selama migrasi cluster admin, dan Pod MetalLB
tidak berjalan di cluster admin, aktifkan VM Seesaw
cluster admin secara manual. Tindakan ini dapat memungkinkan traffic ke VIP bidang kontrol yang saat ini digunakan agar cluster pengguna dapat berfungsi lagi. Namun, VIP untuk bidang kontrol cluster admin
itu sendiri mungkin tidak berfungsi. Dalam hal ini, edit file kubeconfig cluster admin
untuk langsung menggunakan alamat IP node bidang kontrol cluster admin.
Selain itu, di namespace kube-system
, ubah Jenis layanan kube-apiserver
dari ClusterIP
menjadi LoadBalancer
. Jika perlu, buat tiket dukungan.