1. 程式人生 > 實用技巧 >處理K8S叢集pod不能訪問其他service的問題

處理K8S叢集pod不能訪問其他service的問題

當時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