使用metallb工具,目的是為私有環境下,不借助GRE或Azure等雲商的LB,
通過metallb-system工具IP池給k8s service提供external-ip。但是,由於設置metallb網段和k8s物理網段相同,
導致物理網絡中已經使用的ip(比如192.168.3.1)被重復分配給k8s service。
這樣,就導致了k8s 物理網絡無法訪問外網internet。
以下是具體的檢查步驟和處理辦法:
step 1:
首先刪除metal-system命令空間下的所有資源(service/deployment/configmap/ns等)
root >> kubectl delete namespace metallb-system
step 2:
查詢可能已經分配錯誤external-ip的服務service,然后先刪除這些服務
root >> kubectl get service --all-namespaces
root >> kubectl delete service {svc_name} -n {ns_name}
step 3:
重啟舊的ingress-nginx-controller的pod,可以用delete pod方式實現。
root >> kubectl delete pod {ingress-nginx-controller_podname} -n ingress-nginx
step 4:
重新檢查k8s機器和外網的互通,檢查OK如下:
附錄:
我記錄在github的issue和自己處理的方法:
https://github.com/danderson/metallb/issues/512