环境:https://www.cnblogs.com/yangmeichong/p/16477200.html
一、修改 iptables 变成 ipvs 模式
ipvs 采用的 hash 表,iptables 采用一条条的规则列表。集群数量越多 iptables 规则就越多,而 iptables 规则是从上到下匹配,所以效率就越是低下。因此当 service 数量达到一定规模时,hash 查表 的速度优势就会显现出来,从而提高 service 的服务性能
1.1 使用ipvs代替iptables
步骤: 1.在master、pod1、pod2上安装:yum install -y ipset ipvsadm 2.在3台服务器上添加ipvs脚本 cat << 'EOF' > /etc/sysconfig/modules/ipvs.modules #!/bin/bash ipvs_modules=(ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr_ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack_ipv4) for kernel_module in ${ipvs_modules[*]}; do /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1 if [ $? -eq 0 ]; then /sbin/modprobe ${kernel_module} fi done EOF chmod +x /etc/sysconfig/modules/ipvs.modules /etc/sysconfig/modules/ipvs.modules 3. 将master上原来的kube-proxy删除 kubectl -n kube-system get pod -l k8s-app=kube-proxy | grep -v 'NAME' | awk '{print $1}' | xargs kubectl -n kube-system delete pod 4.master修改模式 kubectl -n kube-system edit cm kube-proxy ........... mode:'ipvs' ........... 5.处理防火墙,master和pod上运行 iptables -t filter -F; iptables -t filter -X; iptables -t nat -F; iptables -t nat -X; 修改 ipvs 模式之后过 5-10 分钟测试在 k8s 创建 pod 是否可以正常访问网络 kubectl run busybox --image busybox:1.28 -- restart=Never --rm -it busybox -- sh /# ping baidu.com 测试DNS是否正常 /#nslookup kubernetes.default.svc.cluster.local