kubernetes1.8版本开始,kube-proxy引入了ipvs模式,kube-proxy监控pod的变化并创建ipvs rules,ipvs与iptables类似,也是在kernel下通过netfilter实现的,但是采用hash表存储规则,在规则多的情况下,hash表查询速率的优势就会显现出来。
开启内核参数
cat >> /etc/sysctl.d/k8s.conf << EOF net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF # 是配置生效 sysctl -p
|
安装ipvs
yum install -y ipvsadm ipset
# 临时生效 modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4
# 永久生效 cat > /etc/sysconfig/modules/ipvs.modules <<EOF modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF
|
配置kube-proxy
# 修改 mode 字段,修改成 mode: "ipvs" kubectl edit cm kube-proxy -n kube-system # 重新生成kube-proxy kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
|
测试是否生效
