Show pageOld revisionsBacklinksAdd to bookExport to PDFBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ==== MetalLB come loadBalancer ==== La pagina ufficiale dell'installazione: https://metallb.universe.tf/installation/ Ho eseguito l'operazione preliminare "If you’re using kube-proxy in IPVS mode, since Kubernetes v1.14.2 you have to enable strict ARP mode." Edito la configMap di kube-proxy: <code> ubuntu@kubectl:~$ kubectl edit configmap -n kube-system kube-proxy apiVersion: v1 data: config.conf: |- apiVersion: kubeproxy.config.k8s.io/v1alpha1 ... ... #mode: "iptables" mode: "ipvs" ipvs: strictARP: true kind: KubeProxyConfiguration </code> A questo punto è tutto abbastanza semplice, usando il deploy tramite ''manifest'': https://metallb.universe.tf/installation/#installation-by-manifest <code> kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml </code> Adesso che è installato nel suo namespace: <code> ubuntu@kubectl:~$ kubectl get all -n metallb-system NAME READY STATUS RESTARTS AGE pod/controller-8694df9d9b-8b9zc 1/1 Running 0 145m pod/speaker-9wxnp 1/1 Running 0 145m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/metallb-webhook-service ClusterIP 10.105.26.211 <none> 443/TCP 145m NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/speaker 1 1 1 1 1 kubernetes.io/os=linux 145m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/controller 1/1 1 1 145m NAME DESIRED CURRENT READY AGE replicaset.apps/controller-8694df9d9b 1 1 1 145m </code> creiamo un pool di IP (in questo caso 2, per test) <code> ubuntu@kubectl:~$ cat metalLB/metallb-pool.yaml apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: public-pool namespace: metallb-system spec: addresses: - 185.91.188.40-185.91.188.41 </code> Ci sono due modi di utilizzo di questo Load Balancer: Layer 2 e BGP. Il Layer 2 funziona con il protocollo ''arp'' ed è di gestione più semplice. <code> ubuntu@kubectl:~$ cat metalLB/metallb-L2.yaml apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: ingress namespace: metallb-system spec: ipAddressPools: - public-pool </code> a questo punto è immediato un test: <code> ubuntu@kubectl:~$ kubectl create deploy nginx1 --image nginx:latest ubuntu@kubectl:~$ kubectl expose deploy nginx1 --port 80 --type LoadBalancer ubuntu@kubectl:~$ kubectl create deploy nginx2 --image nginx:latest ubuntu@kubectl:~$ kubectl expose deploy nginx2 --port 80 --type LoadBalancer ubuntu@kubectl:~$ kubectl get all NAME READY STATUS RESTARTS AGE pod/nginx1-c95765fd4-wxkds 1/1 Running 0 1m pod/nginx2-774db4988c-m2vh5 1/1 Running 0 1m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/nginx1 LoadBalancer 10.109.150.219 185.91.188.40 80:31721/TCP 3m ^^^^^^^^^^^^ ^^^^^^^^^^^^^ service/nginx2 LoadBalancer 10.109.150.219 185.91.188.41 80:31721/TCP 3m </code> ATTENZIONE: Il ping non risponde perché metalLB non gestisce le risposte ICMP. kubernetes/loadbalancing.txt Last modified: 2024/12/12 15:45by igor