Difference between revisions of "Metallb"
Jump to navigation
Jump to search
Line 73: | Line 73: | ||
``` | ``` | ||
kubectl logs -f -l component=speaker -n metallb-system | kubectl logs -f -l component=speaker -n metallb-system | ||
+ | ``` | ||
+ | |||
+ | |||
+ | Pod deployment with service for entry into cluster via bgp advertised ip | ||
+ | ``` | ||
+ | --- | ||
+ | apiVersion: apps/v1 | ||
+ | kind: Deployment | ||
+ | metadata: | ||
+ | name: my-nginx | ||
+ | spec: | ||
+ | selector: | ||
+ | matchLabels: | ||
+ | run: my-nginx | ||
+ | replicas: 2 | ||
+ | template: | ||
+ | metadata: | ||
+ | labels: | ||
+ | run: my-nginx | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: my-nginx | ||
+ | image: nginx | ||
+ | ports: | ||
+ | - containerPort: 80 | ||
+ | tolerations: | ||
+ | - key: "node.kubernetes.io/unreachable" | ||
+ | operator: "Exists" | ||
+ | effect: "NoExecute" | ||
+ | tolerationSeconds: 10 | ||
+ | - key: "node.kubernetes.io/not-ready" | ||
+ | operator: "Exists" | ||
+ | effect: "NoExecute" | ||
+ | tolerationSeconds: 10 | ||
+ | --- | ||
+ | apiVersion: v1 | ||
+ | kind: Service | ||
+ | metadata: | ||
+ | name: my-nginx | ||
+ | labels: | ||
+ | run: my-nginx | ||
+ | spec: | ||
+ | ports: | ||
+ | - port: 80 | ||
+ | protocol: TCP | ||
+ | selector: | ||
+ | run: my-nginx | ||
+ | type: LoadBalancer | ||
``` | ``` | ||
Revision as of 17:15, 19 December 2021
Get started with Microk8s
If firewall/router in front you can route or dnat form public ip to metallb private address assignment
sudo ip route add 10.x.x.0/22 via 10.y.y.y (10.y.y.y is k8s instance ip address though usually you would use bgp)
- https://microk8s.io/docs/addon-metallb 10.x.x.0/22 is your ip range
- https://devopslearning.medium.com/metallb-load-balancer-for-bare-metal-kubernetes-43686aa0724f
BGP with frr password doesn't seem to work
frr
frr version 8.1 frr defaults traditional hostname hm0101 log syslog informational log file /var/log/frr/frr.log service integrated-vtysh-config ! ip router-id 10.x.x.r ! router bgp 65551 bgp log-neighbor-changes neighbor 10.x.x.x remote-as 65551 ! neighbor 10.x.x.x password metallb neighbor 10.x.x.y remote-as 65551 ! neighbor 10.x.x.y password metallb neighbor 10.x.x.z remote-as 65551 ! neighbor 10.x.x.z password metallb exit !
metallb-system configMap config config.yaml
apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | peers: - # a test below is router/fw id peer-address: 10.x.x.r peer-asn: 65551 my-asn: 65551 # password: "metallb" address-pools: - name: my-ip-space protocol: bgp avoid-buggy-ips: true addresses: - 192.168.254.0/24
From Linux Router/GW/FW
ip route | grep bgp sudo vtysh -c "show bgp sum" sudo vtysh -c "show bgp neighbor" sudo vtysh -c "show ip route" sudo tcpdump -nnpi myint port 179 sudo tail -f /var/log/frr/frr.log
kubectl logs -f -l component=speaker -n metallb-system
Pod deployment with service for entry into cluster via bgp advertised ip
--- apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx spec: selector: matchLabels: run: my-nginx replicas: 2 template: metadata: labels: run: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 tolerations: - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 10 - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 10 --- apiVersion: v1 kind: Service metadata: name: my-nginx labels: run: my-nginx spec: ports: - port: 80 protocol: TCP selector: run: my-nginx type: LoadBalancer
Other options
- https://github.com/meta-magic/metallb-baremetal-example
- https://stackoverflow.com/questions/63974879/microk8s-metallb-ingress-nginx-how-to-route-external-traffic
https://v0-2-1--metallb.netlify.app/tutorial/
arp
https://link.medium.com/xgtCprRJ0lb
https://manintheit.org/en/posts/kubernetes/kubernetes-metallb-loadbalancer-with-bgp-mode/