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

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

image

posted @ 2025-11-05 20:57  二乘八是十六  阅读(4)  评论(0)    收藏  举报