Metallb实现k8s集群EXTERNAL-IP

部署

下载最新代码并切换到release分支

git clone https://github.com/metallb/metallb.git
cd metallb
git checkout v0.14.8

部署metallb

cd config/manifests
kubectl apply -f metallb-native.yaml

创建MetalLB地址池

cat > metallb-ip-pool.yaml << EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 192.168.1.150-192.168.1.150

---

apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
spec:
ipAddressPools:
- first-pool
EOF
kubectl apply -f metallb-ip-pool.yaml

查看创建的ip地址池

kubectl get IPAddressPool -n metallb-system

创建nginx测试pod

cat > nginx.yaml << EOF
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: 192.168.1.21:81/rancher/nginx:1.27.1-alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: LoadBalancer
ports:
- nodePort: 30080
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
EOF

kubectl apply -f nginx.yaml

查看创建的nginx pod、svc

$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-65d79b77dd-brsgf 1/1 Running 0 8m9s
nginx-deployment-65d79b77dd-rxqbc 1/1 Running 0 8m14s
nginx-deployment-65d79b77dd-vq8gz 1/1 Running 0 8m16s
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 94m
nginx-svc LoadBalancer 10.43.45.206 192.168.1.150 80:30080/TCP 14m

测试访问外部ip

curl http://192.168.1.150
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

参考链接:https://blog.csdn.net/Jerry00713/article/details/139979169

文章作者: 慕容峻才
文章链接: https://www.acaiblog.top/Metallb实现k8s集群EXTERNAL-IP/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿才的博客
微信打赏
支付宝打赏