K3S 使用 MetalLB 作为 LoadBalancer
目的:创建所在网段可以访问的服务
环境:K3S + Kali
安装 MetalLB
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml
定义要分配给负载平衡器服务的IP。metallb-IPool.yaml:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 10.211.55.128-10.211.55.130
然后是定义广播这些IP的方式,这里选择Layer 2。metallb-L2Advertisement.yaml:
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
spec:
ipAddressPools:
- first-pool
提交
kubectl apply -f metallb-IPool.yaml
kubectl apply -f metallb-L2Advertisement.yaml
服务配置。nginx-service.yaml:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
annotations:
metallb.universe.tf/address-pool: first-pool
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
deployment。nginx-deployment.yaml:
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
提交
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
EXTERNAL-IP处于物理机网段

可以访问

物理机和这个服务的MAC映射到同一个
