k8s master不能访问NodePort端口,但可以访问node节点的NodePort端口。
master不能访问NodePort端口,但可以访问node节点的NodePort端口的解决。
·
排查主观原因:
1、pod部署运行正常
2、svervice运行正常,Endpoints里有对应的pod
3、master主节点的NodePort端口进程也存在
问题现象:
master节点的nodePort存在,但不通,telnet不通。node节点可以telnet通
解决方法:
1、转发
网上给的方案,ipv4配置转发。由于master不部署具体的pod,访问master节点的nodeport会转发到node上。网上给修改配置文件
给出方案a
tee /etc/sysctl.conf <<-'EOF'
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
vm.max_map_count = 262144
fs.file-max = 655350
net.core.somaxconn=20480
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
echo 1 >/proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 >/proc/sys/net/bridge/bridge-nf-call-ip6tables
sysctl -p
给出方案b
cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_recycle = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
结果:
虽然FORWARD为ACCEPT,但master还是telnet不通nodeport,
2、修改虚机网络,改为桥接
原本使用的不是桥接网络,改为桥接网络,并修改/etc/sysconfig/network-scripts/ifcfg-ens33文件(不同系统文件名有区别,具体可以参考网上的桥接网络设置)。
结果
重新配置k8s集群的虚机后,主节点可以访问了
补:
过段时间后,重新打开发现主节点又不通了,查了好久大概确定是网卡2导致的。
virtualBox的网络配置完桥接后,虚机无法访问外部网络,需要再配置个网卡2(本地的NAT网络),这个网络每台虚机上自动生成的ip相同,导致k8s的网络配置有冲突。
不配置网卡2不通访问外部环境,配置后有冲突,没有找到解决办法(如果有其它方法,请留言一下,不胜感激),最后尝试换成vmware只配置一个桥接网卡可以了。
更多推荐
已为社区贡献1条内容
所有评论(0)