Kubernetes 修改 kube-porxy ipvs 模式
Kubernetes 默认的 kube-proxy 模式为 iptables,但是 iptables 有时候会出现一些问题,比如 clusterip 不能相互 ping 通。所以决定把模式从 iptables 切换为 ipvs。
- 查看 kube-proxy 信息
kubectl get pods -n kube-system -o wide | grep proxy
- 使用 kubectl logs 可以看到目前 kube-proxy pod 的 proxy 模式
kubectl logs kube-proxy-4hw9j -n kube-system
- 启动 ipvs 模块
cat <<EOF > /etc/sysconfig/modules/ipvs.modules
!/bin/bash
ipvs_modules_dir="/usr/lib/modules/\`uname -r\`/kernel/net/netfilter/ipvs"
for i in \`ls \$ipvs_modules_dir | sed -r 's#(.*).ko.xz#\1#'\`; do
/sbin/modinfo -F filename \$i &> /dev/null
if [ \$? -eq 0 ]; then
/sbin/modprobe \$i
fi
done
EOF
chmod +x /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules - 确保所有节点的 ipvs 的模块已经运行
lsmod | grep ip_vs
- 修改 kube-proxy configMap 文件,修改为 ipvs 模式
kubectl edit configmap kube-proxy -n kube-system
+ mode: "ipvs" # 原来为 mode: "" - 删除所有 kube-proxy 的 pod,K8S 有自动愈合功能,当 pod 被删除之后,会重启被删除的 pod
kubectl delete pods `kubectl get pods -n kube-system | grep kube-proxy | awk '{print $1}'` -n kube-system
- 查看重启后的 kube-proxy pod 的 proxy 模式是否是 ipvs
kubectl get pods -n kube-system -o wide | grep proxy
- 安装 ipvsadm 查看具体的 ipvs 规则
安装 ipvsadm
yum install -y ipvsadm
查看 ipvsadm 已经启用的规则
从 forward 的 masq 标识来看,为 lvs/nat 模式
ipvsadm -ln
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 dongdong's blog!