使用metallb工具,目的是为私有环境下,不借助GRE或Azure等云商的LB,nginx
经过metallb-system工具IP池给k8s service提供external-ip。可是,因为设置metallb网段和k8s物理网段相同,git
致使物理网络中已经使用的ip(好比192.168.3.1)被重复分配给k8s service。github
这样,就致使了k8s 物理网络没法访问外网internet。网络
如下是具体的检查步骤和处理办法:工具
step 1:spa
首先删除metal-system命令空间下的全部资源(service/deployment/configmap/ns等)blog
root >> kubectl delete namespace metallb-systemip
step 2:资源
查询可能已经分配错误external-ip的服务service,而后先删除这些服务get
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