centos8版本(linux内核版本高于3.13)采用了nftables而不是iptables做数据包的转发,所以使用默认的iptables方式可能会出现错误。需要修改集群配置,修改集群配置文件为如下形势:
kubeproxy:
extra_args:
# 默认使用iptables进行数据转发
proxy-mode: "ipvs" # 如果要启用ipvs,则此处设置为`ipvs`
extra_binds:
- "/lib/modules:/lib/modules"
此外还要在每台宿主机执行如下操作:
yum install ipset ipvsadm -y
mkdir -p /opt/ipvs-k8s/
cat > /opt/ipvs-k8s/ipvs.sh <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_sh
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- nf_conntrack_ipv4
EOF
chmod +x /opt/ipvs-k8s/ipvs.sh
echo "/opt/ipvs-k8s/ipvs.sh" >> /etc/rc.d/rc.local
chmox +x /etc/rc.d/rc.local