1.官方链接
https://metallb.universe.tf/concepts/
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/namespace.yaml kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/metallb.yamlstep 2 配置config, 以layer2协议为例
config.yaml的内容如下:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: dev-public-ips
protocol: layer2
addresses:
- 10.0.2.100-10.0.2.200
其中,dev-public-ips为自定义名称,后面会用到, addresses为自定义地址池
step 3 以nginx为例(1) Deployment
nginx-deployment.yaml 的内容如下
root@unode1:~/metallb/example# cat nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pc-deployment
namespace: dev
spec:
replicas: 3
selector:
matchLabels:
app: nginx-pod
template:
metadata:
labels:
app: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
应用Deployment该文件
kubectl apply -f nginx-deployment.yaml
(2) Service
root@unode1:~/metallb/example# cat service-metallb.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: dev
annotations:
metallb.universe.tf/address-pool: dev-public-ips #注意,dev-public-ips为config.yaml地址池的名称
spec:
ports:
- port: 81 #external ip的端口
targetPort: 80 # 内部容器端口
selector:
app: nginx-pod
type: LoadBalancer
应用Service文件
kubectl apply -f service-metallb.yaml
(3)参看Service
root@unode1:~/metallb/example# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.109.79.140 10.0.2.101 81:30182/TCP 14h
其中81为EXTERNAL-IP的端口, 30182为node端口, 访问测试如下:
测试1
root@unode1:~/metallb/example# curl 10.0.2.101:81Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
测试2
root@unode1:~/metallb/example# curl 10.0.2.4:30182 #10.0.2.4为node的ipWelcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.



