Minikube MetalLB: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
 
(18 intermediate revisions by the same user not shown)
Line 75: Line 75:


==MetalLB » Forward==
==MetalLB » Forward==
{|class="wikitable"
{|class='wikitable mw-collapsible mw-collapsed'
!scope='col' colspan='4' style='width:800px'|
MetalLB » Implement » Forward » Routing
|-
|-
!scope="col" colspan="4" | Implement Forward Routing
!scope='col' style='width:160px'| Name
!scope='col' style='width:170px'| Network
!scope='col' style='width:270px'| Subnets
!scope='col' style='width:90px' | Forward
|-
|-
!scope="col" style='width:160px'| Name
| Network » MetalLB      || <code>192.168.49.100/30</code>    || <code>192.168.49.100 … 103/30 = 04</code>  ||style='text-align:center'|
!scope="col" style='width:170px'| Network
!scope="col" style='width:270px'| Subnets
!scope="col" style='width:90px' | Forward
|-
|-
| Network » MetalLB      || <code>192.168.49.100/30</code>    || <code>192.168.49.100 103/30 = 4</code>  ||style='text-align:center'|
| Network » MetalLB      || <code>192.168.49.104/30</code>    || <code>192.168.49.104 107/24 = 04</code>  ||style='text-align:center'| ⚪️
|-
|-
| Network » MetalLB      || <code>192.168.49.104/30</code>    || <code>192.168.49.104 … 107/24 = 4</code>  ||style='text-align:center'| ⚪️
| Network » MetalLB      || <code>192.168.49.104/29</code>    || <code>192.168.49.104 … 111/29 = 08</code>  ||style='text-align:center'|
|-
|-
| Network » MetalLB      || <code>192.168.49.104/29</code>    || <code>192.168.49.104 … 111/29 =  8</code>  ||style='text-align:center'| ✅
| Network » MetalLB      || <code>192.168.49.112/29</code>    || <code>192.168.49.112 … 119/29 = 08</code>  ||style='text-align:center'| ⚪️
|-
| Network » MetalLB      || <code>192.168.49.112/29</code>    || <code>192.168.49.112 … 119/29 = 8</code>  ||style='text-align:center'| ⚪️
|-
|-
| Network » MetalLB      || <code>192.168.49.112/28</code>    || <code>192.168.49.112 … 127/28 = 16</code>  ||style='text-align:center'| ✅
| Network » MetalLB      || <code>192.168.49.112/28</code>    || <code>192.168.49.112 … 127/28 = 16</code>  ||style='text-align:center'| ✅
Line 96: Line 96:
| Network » MetalLB      || <code>192.168.49.128/28</code>    || <code>192.168.49.128 … 143/28 = 16</code>  ||style='text-align:center'| ⚪️
| Network » MetalLB      || <code>192.168.49.128/28</code>    || <code>192.168.49.128 … 143/28 = 16</code>  ||style='text-align:center'| ⚪️
|-
|-
!scope="col" style='width:160px'| Name
!scope='col' style='width:160px'| Name
!scope="col" style='width:170px'| Network
!scope='col' style='width:170px'| Network
!scope="col" style='width:270px'| Subnets
!scope='col' style='width:270px'| Subnets
!scope="col" style='width:90px' | Forward
!scope='col' style='width:90px' | Forward
|-
|-
| Network » MetalLB      || <code>192.168.49.128/27</code>    || <code>192.168.49.128 … 159/27 = 32</code>  ||style='text-align:center'| ✅
| Network » MetalLB      || <code>192.168.49.128/27</code>    || <code>192.168.49.128 … 159/27 = 32</code>  ||style='text-align:center'| ✅
Line 107: Line 107:
| Network » MetalLB      || <code>192.168.49.192/27</code>    || <code>192.168.49.192 … 223/27 = 32</code>  ||style='text-align:center'| ⚪️
| Network » MetalLB      || <code>192.168.49.192/27</code>    || <code>192.168.49.192 … 223/27 = 32</code>  ||style='text-align:center'| ⚪️
|-
|-
| Network » MetalLB      || <code>192.168.49.192/29</code>    || <code>192.168.49.192 … 199/29 = 8</code>  ||style='text-align:center'| ✅
| Network » MetalLB      || <code>192.168.49.192/29</code>    || <code>192.168.49.192 … 199/29 = 08</code>  ||style='text-align:center'| ✅
|-
| Network » MetalLB      || <code>192.168.49.200/29</code>    || <code>192.168.49.200 … 207/29 =  8</code>  ||style='text-align:center'| ⚪️
|-
| Network » MetalLB      || <code>192.168.49.208/29</code>    || <code>192.168.49.208 … 215/29 =  8</code>  ||style='text-align:center'| ⚪️
|}
|}


==MetalLB » Route » Host==
==MetalLB » Forward » Route==
{|class='wikitable mw-collapsible mw-collapsed'
!scope='col' style='width:1000px'|
'''MetalLB » IP » Route » Service'''
|-
|valign='top'|
  vim /etc/sysctl.conf
  vim /etc/sysctl.conf
<syntaxhighlight lang="ini" line start="27" highlight="2">
<syntaxhighlight lang="ini" line start="27" highlight="2">
Line 198: Line 199:
EXE
EXE
</syntaxhighlight>
</syntaxhighlight>
|}
==MetalLB » LoadBalancer » IP==
{|class='wikitable mw-collapsible'
!scope='col' colspan='4' style='width:800px'|
MetalLB » LoadBalancer » IPs
|-
!scope="col" style='width:240px'| Name
!scope="col" style='width:180px'| IPv4
!scope="col" style='width:240px'| Port
!scope="col" style='width:100px'| Active
|-
| [[Helm/Kafka|Helm » Kafka]]                  || <code>192.168.49.100/32</code>    ||style='text-align:right'| <code>9094</code>                          ||style='text-align:center'| 🟢
|-
| [[Helm/MariaDB|Helm » MariaDB]]              || <code>192.168.49.101/32</code>    ||style='text-align:right'| <code>3306</code>                          ||style='text-align:center'| 🟢
|-
| [[Helm/PostgreSQL|Helm » PostgreSQL]]        || <code>192.168.49.102/32</code>    ||style='text-align:right'| <code>5432</code>                          ||style='text-align:center'| 🟢
|-
| [[K8s/PgBouncer|K8s » PgBouncer]]            || <code>192.168.49.103/32</code>    ||style='text-align:right'| <code>5432</code>                          ||style='text-align:center'| 🟢
|-
| [[Helm/Jenkins|Helm » Jenkins]]              || <code>192.168.49.104/32</code>    ||style='text-align:right'| <code>50000</code>                        ||style='text-align:center'| 🟢
|-
| [[K8s/PgVector|K8s » PgVector]]              || <code>192.168.49.105/32</code>    ||style='text-align:right'| <code>5432</code>                          ||style='text-align:center'| 🟢
|-
| [[Helm/Redis|Helm » Redis]]                  || <code>192.168.49.106/32</code>    ||style='text-align:right'| <code>6379</code>                          ||style='text-align:center'| 🟢
|-
| [[Helm/MongoDB|Helm » MongoDB]]              || <code>192.168.49.107/32</code>    ||style='text-align:right'| <code>27017</code>                        ||style='text-align:center'| 🟢
|-
| [[Helm/Consul|Helm » Consul]]                || <code>192.168.49.108/32</code>    ||style='text-align:right'| <code>8500</code>                          ||style='text-align:center'| 🟢
|-
| [[Helm/Harbor|Helm » Harbor]]                || <code>192.168.49.109/32</code>    ||style='text-align:right'| <code>443</code>                          ||style='text-align:center'| 🟢
|-
!scope="col" style='width:240px'| Name
!scope="col" style='width:180px'| IPv4
!scope="col" style='width:240px'| Port
!scope="col" style='width:100px'| Active
|-
| [[Helm/Pi-Hole|Helm » Pi-Hole]]              || <code>192.168.49.110/32</code>    ||style='text-align:right'| <code>53,80,443</code>                    ||style='text-align:center'| 🟢
|-
|                                              || <code>192.168.49.111/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.112/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.113/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.114/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.115/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.116/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.117/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.118/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|-
|                                              || <code>192.168.49.119/32</code>    ||style='text-align:right'| <code></code>                              ||style='text-align:center'| ⚪️
|}


==Playground==
==Playground==
Line 310: Line 368:


| valign="top" |
| valign="top" |
* [[K8s/Swiss Knife|K8s » Swiss Knife]]
* [[K8s/Storage|K8s » Storage]]
* [[K8s/Ingress|K8s » Ingress]]
* [[K8s/Service|K8s » Service]]
* [[K8s/Secret|K8s » Secret]]
* [[K8s/Run|K8s » Run]]
* [[K8s]]


| valign="top" |
| valign="top" |
Line 317: Line 382:
----
----
|-
|-
| valign="top" |
* [[Helm/GitLab External|Helm » GitLab » External]]
* [[Helm/PostgreSQL|Helm » PostgreSQL]]
* [[Helm/MariaDB|Helm » MariaDB]]
* [[Helm/Pi-Hole|Helm » Pi-Hole]]
* [[Helm/GitLab|Helm » GitLab]]
* [[Helm/Kafka|Helm » Kafka]]
* [[Helm/Redis|Helm » Redis]]
| valign="top" |
| valign="top" |
* [[Minikube Ingress DNS| Minikube » Ingress DNS]]
* [[Minikube Ingress DNS| Minikube » Ingress DNS]]
Line 323: Line 397:
* [[Minikube Tunnel|Minikube » Tunnel]]
* [[Minikube Tunnel|Minikube » Tunnel]]
* [[Minikube]]
* [[Minikube]]
| valign="top" |


| valign="top" |
| valign="top" |
Line 342: Line 414:
* [[Helm]]
* [[Helm]]
* [[Istio]]
* [[Istio]]
* [[K8s]]
* [[UFW]]


| valign="top" |
| valign="top" |
Line 352: Line 424:
* [[Swap Space]]
* [[Swap Space]]
* [[CIDR]]
* [[CIDR]]
* [[UFW]]


| valign="top" |
| valign="top" |


|}
|}

Latest revision as of 10:22, 20 October 2025

helm repo add metallb https://metallb.github.io/metallb
helm repo update && helm repo list
kubectl config get-contexts

Config

export KUBECONFIG="${HOME}/.kube/dev-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/gcp-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/config"

Install

helm show values metallb/metallb --version=0.14.8|less
helm show values metallb/metallb --version=0.14.9|less


kubectl get ns|grep metallb-system
kubectl delete ns   metallb-system

kubectl get ns|grep metallb-system
kubectl create ns   metallb-system

cat <<YML | helm -n=metallb-system install    metallb metallb/metallb --version=0.14.9 -f=-
---
installCRDs: true
fullnameOverride: metallb
YML

cat << YML | kubectl -n=metallb-system apply -f=-
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: metallb-ip-pool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.49.100-192.168.49.199
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: metallb-l2-ad
  namespace: metallb-system
spec:
  ipAddressPools:
  - metallb-ip-pool
YML

Uninstall

helm uninstall -n=metallb-system metallb
kubectl delete namespace metallb

MetalLB » Forward

MetalLB » Implement » Forward » Routing

Name Network Subnets Forward
Network » MetalLB 192.168.49.100/30 192.168.49.100 … 103/30 = 04
Network » MetalLB 192.168.49.104/30 192.168.49.104 … 107/24 = 04 ⚪️
Network » MetalLB 192.168.49.104/29 192.168.49.104 … 111/29 = 08
Network » MetalLB 192.168.49.112/29 192.168.49.112 … 119/29 = 08 ⚪️
Network » MetalLB 192.168.49.112/28 192.168.49.112 … 127/28 = 16
Network » MetalLB 192.168.49.128/28 192.168.49.128 … 143/28 = 16 ⚪️
Name Network Subnets Forward
Network » MetalLB 192.168.49.128/27 192.168.49.128 … 159/27 = 32
Network » MetalLB 192.168.49.160/27 192.168.49.160 … 191/27 = 32
Network » MetalLB 192.168.49.192/27 192.168.49.192 … 223/27 = 32 ⚪️
Network » MetalLB 192.168.49.192/29 192.168.49.192 … 199/29 = 08

MetalLB » Forward » Route

MetalLB » IP » Route » Service

vim /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

sudo sysctl -p
net.ipv4.ip_forward = 1

ip route | grep default
default via 172.31.1.1 dev eth0 proto dhcp src 65.21.251.38 metric 100

cat << EXE | sudo bash
cat << ENV | tee /etc/default/metallb-route >/dev/null
METAL_LB_GTW_NAME=minikube
METAL_LB_GTW_HOST=$(docker network inspect minikube|jq -r '.[].Containers[]?.IPv4Address|split("/")[0]')
ENV
echo
cat /etc/default/metallb-route
EXE

cat <<'INI' | sudo tee /etc/systemd/system/metallb-route.service >/dev/null
[Unit]
Description=MetalLB Routes
Wants=network-online.target docker.service snap.lxd.daemon.service containerd.service minikube.service
After=network-online.target docker.service snap.lxd.daemon.service containerd.service minikube.service

[Service]
Type=oneshot
EnvironmentFile=-/etc/default/metallb-route

ExecStartPre=/bin/sleep 15
ExecStartPre=/bin/bash -c "if [ -z \"${METAL_LB_GTW_HOST}\" ]; then echo \"Variable METAL_LB_GTW_HOST not set in /etc/default/metallb-route\"; errors_exit; fi"
ExecStart=/usr/sbin/ip route add 192.168.49.100/30 via ${METAL_LB_GTW_HOST}
ExecStart=/usr/sbin/ip route add 192.168.49.104/29 via ${METAL_LB_GTW_HOST}
ExecStart=/usr/sbin/ip route add 192.168.49.112/28 via ${METAL_LB_GTW_HOST}
ExecStart=/usr/sbin/ip route add 192.168.49.128/27 via ${METAL_LB_GTW_HOST}
ExecStart=/usr/sbin/ip route add 192.168.49.160/27 via ${METAL_LB_GTW_HOST}
ExecStart=/usr/sbin/ip route add 192.168.49.192/29 via ${METAL_LB_GTW_HOST}
ExecStop=/usr/sbin/ip  route del 192.168.49.100/30
ExecStop=/usr/sbin/ip  route del 192.168.49.104/29
ExecStop=/usr/sbin/ip  route del 192.168.49.112/28
ExecStop=/usr/sbin/ip  route del 192.168.49.128/27
ExecStop=/usr/sbin/ip  route del 192.168.49.160/27
ExecStop=/usr/sbin/ip  route del 192.168.49.192/29
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
INI

cat << EXE | sudo bash
systemctl daemon-reload
cat /etc/systemd/system/metallb-route.service
systemctl enable  --now metallb-route.service
systemctl status        metallb-route.service
echo && ip route show
echo && sysctl -p
EXE

cat << EXE | bash
traceroute 192.168.49.100
traceroute 192.168.49.101
EXE

cat << EXE | sudo bash
systemctl daemon-reload
cat /etc/systemd/system/metallb-route.service
systemctl disable --now metallb-route.service
systemctl status        metallb-route.service
echo && ip route show
echo && sysctl -p
EXE

MetalLB » LoadBalancer » IP

MetalLB » LoadBalancer » IPs

Name IPv4 Port Active
Helm » Kafka 192.168.49.100/32 9094 🟢
Helm » MariaDB 192.168.49.101/32 3306 🟢
Helm » PostgreSQL 192.168.49.102/32 5432 🟢
K8s » PgBouncer 192.168.49.103/32 5432 🟢
Helm » Jenkins 192.168.49.104/32 50000 🟢
K8s » PgVector 192.168.49.105/32 5432 🟢
Helm » Redis 192.168.49.106/32 6379 🟢
Helm » MongoDB 192.168.49.107/32 27017 🟢
Helm » Consul 192.168.49.108/32 8500 🟢
Helm » Harbor 192.168.49.109/32 443 🟢
Name IPv4 Port Active
Helm » Pi-Hole 192.168.49.110/32 53,80,443 🟢
192.168.49.111/32 ⚪️
192.168.49.112/32 ⚪️
192.168.49.113/32 ⚪️
192.168.49.114/32 ⚪️
192.168.49.115/32 ⚪️
192.168.49.116/32 ⚪️
192.168.49.117/32 ⚪️
192.168.49.118/32 ⚪️
192.168.49.119/32 ⚪️

Playground

kubectl get pods -n metallb-system -o=yaml|yq -r .items[].spec.containers[].image|awk -F @ '{printf("%s\n", $1)}'|sort -h

kubectl -n=metallb-system logs -f svc/metallb-webhook-service -c=controller
kubectl -n=metallb-system logs -f svc/metallb-webhook-service

kubectl -n=metallb-system describe L2Advertisement metallb-l2-ad
kubectl -n=metallb-system get L2Advertisement

kubectl -n=metallb-system describe IPAddressPool metallb-ip-pool
kubectl -n=metallb-system get IPAddressPool

docker network prune -f
docker volume  prune -f
docker system  prune -f
docker image ls
cat <<'EXE' | bash
for d in system network volume
do docker ${d} prune -f;done
EXE
cat <<'EXE' | ssh deploy@ci.chorke.org
for d in system network volume
do docker ${d} prune -f;done
EXE

systemctl stop    minikube.service
systemctl status  minikube.service
systemctl restart minikube.service
systemctl stop    minikube-tunnel.service
systemctl status  minikube-tunnel.service
systemctl restart minikube-tunnel.service
systemctl status network-online.target
systemctl status containerd.service
systemctl status docker.service

minikube addons disable metallb
minikube addons enable  metallb
minikube addons list
minikube status
sudo journalctl -xeu minikube-tunnel
sudo journalctl -xeu minikube
sudo -i -u minikube
minikube ssh
docker network inspect minikube|jq -r '.[].Containers[]?.IPv4Address'
docker network inspect minikube|jq -r '.[].Containers[]?.MacAddress'
docker network inspect minikube|jq -r '.[].IPAM.Config[].Gateway'
docker network inspect minikube|jq -r '.[].Containers[]?.Name'

References