我正在使用 metallb 为家庭实验室 k8s 集群中的 LoadBalancers 分配 IP。不过我不得不缩小 IP 池,因为我需要在另一个测试集群中使用其中一些 IP。
我已经这样做了,但现有 LB 服务的 IP 此后保持不变——我需要以某种方式给 LB 服务一个机会,让它们请求新的 IP。我该怎么做?
答案1
看起来你的问题的答案包含在在这个 github 线程中。
一切都应该归结为使用适当的配置映射重新创建您的服务。看看这个答案:
变更前
[root@m-k8s ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cfgmap-svc LoadBalancer 10.100.199.95 192.168.1.11 80:31463/TCP 2m5s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h13m
更改 IP 地址
[root@m-k8s ~]# cat metallb-l2.yaml | grep 192.168
- 192.168.1.11-192.168.1.13
[root@m-k8s ~]# sed -i 's/11/101/;s/13/103/' metallb-l2.yaml
[root@m-k8s ~]# cat metallb-l2.yaml | grep 192.168
- 192.168.1.101-192.168.1.103
只需申请
kubectl apply -f metallb-l2.yaml
通过 kubelet 进行删除和修改
[root@m-k8s ~]# kubectl delete pods --all -n metallb-system
pod "controller-65895b47d4-l5xnn" deleted
pod "speaker-bk8gr" deleted
pod "speaker-bksns" deleted
pod "speaker-c2z6z" deleted
pod " speaker-chlt5" deleted
pod "speaker-scx6x" deleted
重新创建 svc
[root@m-k8s ~]# kubectl delete service cfgmap-svc
service "cfgmap-svc" deleted
[root@m-k8s ~]# kubectl expose deployment cfgmap --type=LoadBalancer --name=cfgmap-svc --port=80
service/cfgmap-svc exposed
检查服务
[root@m-k8s ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cfgmap-svc3 LoadBalancer 10.104.192.184 192.168.1.101 80:31440/TCP 8s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h34m
您还可以查看在这个 github 问题上。注意,这是旧线程。