當時K8S環境想用來設計部署微服務這塊的架構才發現的這個問題
我的K8S集群是使用kubeadm安裝的,當時也是跟着網上教程走的,並沒有注意網絡路由使用的iptables規則
現在出現pod不能ping通service或者ping通CLUSTER-IP的問題,導致如果我再集群里部署注冊中心,並不能正常使用的問題
以下為把iptables變更為ipvs模塊的操作
修改網絡模式ipvs
1、修改kube-proxy
再master上執行:kubectl edit cm kube-proxy -n kube-system (如果是高可用,在第一個master上執行)
mode “ipvs” (找到kind: KubeProxyConfiguration這一項。。。他下面的第二行就是這個mode)
2、添加ipvs模塊(每個節點上執行)
cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF
3、添加權限並生效(每個節點上執行)
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
4、重啟kube-proxy(master上執行)
kubectl get pod -n kube-system | grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
5、查看kube-proxy啟動日志,確認是否為ipvs
kubectl logs -n kube-system kube-proxy-ff74q (這個pod名稱使用命令kubectl get pod -n kube-system查出來)
6、驗證是否可以pod訪問service