排查主观原因:

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只配置一个桥接网卡可以了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐