k3s安装metallb负载均衡
先记录配置过程,后续补充详细介绍
1.安装metallb负载均衡器
1.1.配置内核转发参数
sudo tee /etc/sysctl.d/90-k8s-lb.conf <<EOF
# 打开路由转发(MetalLB 必需)
net.ipv4.ip_forward = 1
# 让 speaker 能及时发 gratuitous-ARP
net.ipv4.conf.all.arp_notify = 1
EOF
sudo sysctl -p /etc/sysctl.d/90-k8s-lb.conf
1.2.安装metallb
- kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml
root@linux:~# kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml
root@linux:~# kubectl get pods -n metallb-system
NAME READY STATUS RESTARTS AGE
controller-5cbffbc46b-ckvgm 1/1 Running 0 16m
speaker-qb9cc 1/1 Running 0 16m
root@linux:~#
2.配置loadbance ip地址池
- metallb-pool地址池配置
# metallb-pool.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: default
namespace: metallb-system
spec:
addresses:
- 10.22.40.10-10.22.40.200
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2adv
namespace: metallb-system
- kubectl apply -f metallb-config.yaml
➜ Deployment kubectl apply -f metallb-config.yaml
ipaddresspool.metallb.io/default created
l2advertisement.metallb.io/l2adv created
➜ Deployment
3.测试loadbance分配
3.1. 创建nginx deployment
➜ Deployment cat nginx-dp.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
➜ Deployment
3.2. 创建loadbance
- loadbance配置
➜ Deployment cat nginx-slb.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-slb
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: nginx
➜ Deployment
- 应用loadbance配置
➜ Deployment kubectl apply -f nginx-slb.yaml
service/nginx-slb created
➜ Deployment
➜ Deployment kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 9d
nginx-service NodePort 10.43.67.181 <none> 80:30080/TCP 8d
nginx-slb LoadBalancer 10.43.99.209 10.22.40.11 80:31920/TCP 4s
➜ Deployment


浙公网安备 33010602011771号