Kubernetes
K8s - 如何觸發 LoadBalancer svc IP 的刷新?
我正在使用 metallb 將 IP 分配給家庭實驗室 k8s 集群中的 LoadBalancers。我不得不縮小 IP 池,因為我需要在另一個測試集群中使用其中的一些。
我已經這樣做了,但是現有 LB svcs 的 IP 在之後保持不變——我需要以某種方式給 LB svcs 一個踢,讓它們請求新的 IP。我怎樣才能做到這一點?
看起來您的問題的答案包含在這個 github 執行緒中。
一切都應該歸結為使用適當的 configmap 重新創建您的服務。看看這個答案:
變更前
[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
檢查 svc
[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 問題。請注意,它是舊執行緒。