完美解决k8s master节点无法ping node节点中的IP或Service NodePort的IP

1、问题一

使用搭建好了K8S集群,先是node节点加入k8s集群时,用的内网IP,导致master节点无法操作node节点中的pod(这里的不能操作,指定是无法查看node节点中pod的日志、启动描述、无法进入pod内部,即 kubectl logs 、kubectl describe、kubectl exec -it 等等的命令都不能)

解决办法:解决公网下,k8s calico master节点无法访问node节点创建的pod-CSDN博客

2、问题二

master节点能正常访问node节点创建的pod,即问题一所产生的问题

但是master节点无法ping通node节点创建pod所属的Service的IP

注意:这里ping的是Service,而不是pod的IP,因为k8s节点机器ping pod的IP是肯定不会成功的,节点机器不属于k8s机器内的网络!!!如图:

进入主题:我创建了一个mynginx的Service,type为NodePort,如下:

但是master节点去ping 10.96.177.91失败,node节点ping是成功的


解决方法:

2.1、需要使用 ipvs 替换iptables
  • 所有节点都需要操作,我这里只有一台master和一台node,所以我只在master操作

    vim /etc/sysctl.d/k8s.conf

加入:net.ipv4.ip_forward = 1

  • 更新配置
bash 复制代码
sysctl --system
2.2、安装IPVS
bash 复制代码
yum -y install ipvsadm  ipset
  • 临时生效
bash 复制代码
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
  • 永久生效
bash 复制代码
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
2.3、配置kube-proxy
  • 在master上操作,因使用kubeadmin安装,所以操作方式如下
bash 复制代码
kubectl edit cm kube-proxy -n kube-system
  • 找到mode的位置,把mode修改为ipvs
2.4、重启kube-proxy
  • 在master重启kube-proxy
bash 复制代码
kubectl  get pod -n kube-system | grep kube-proxy | awk '{print $1}' | xargs kubectl delete pod -n kube-system
  • 使用:kubectl get pod -A 发现kube-proxy成功运行了2个新的pod
2.5、验证kube-proxy的pod是否开启ipvs

补充下,k8s有几个节点,就会有几个kube-proxy-xxxx的pod,我们需要去查看对应节点的 kube-proxy-xxxx,不要去查看master节点的kube-proxy-xxxx

bash 复制代码
kubectl logs kube-proxy-7cb69 -n kube-system
  • kube-proxy-7cb69:这个pod名称,根据node节点实际情况填写

开启失败!原因:

can't set sysctl net/ipv4/vs/conn_reuse_mode, kernel version must be at least 4.1

搜索了下,是linux内核版本太低,K8S要求kernel必须大于等于4.1版本

解决方案

CentOS 7.9升级内核(kernel-5.4.254),解决1 proxier.go:389] can't set sysctl net/ipv4/vs/conn_reuse_mode, ker-CSDN博客

2.6、验证master节点是否能ping通NodePort方式Service的IP

成功解决!

  • 访问Servie
2.7、使用节点IP外网访问Service
相关推荐
程序猿小郑4 小时前
Docker Compose 构建完整服务实战指南:从入门到最佳实践
docker·容器
行百里er8 小时前
5 分钟跑起 Redis(Docker 版)
redis·后端·docker
Mr.朱鹏8 小时前
Docker三剑客实战指南:Docker、Dockerfile 和 Docker Compose
python·docker·devops·dockerfile
IpdataCloud8 小时前
如何判断游戏注册IP是住宅宽带还是机房代理?IP风险识别看ASN、IDC标签与风险分
tcp/ip·ip
鬼先生_sir9 小时前
Docker 完整教程
docker
java_logo9 小时前
Docker 一键部署 Jellyfin:快速搭建私有化媒体服务器
docker·私有化部署·jellyfin·硬件加速·媒体服务器·轩辕镜像·影音库
jianpeng的工程笔记10 小时前
WeKnora 搭建研发 EDA 知识库:Docker 部署、RAG 与 Wiki 实践
docker·知识库·eda·rag
ysu_031411 小时前
【2026】K8s GPU调度空占怎么解?Kueue与Volcano Gang配置
云原生·kubernetes·gpu算力·volcano·ai基础设施·kueue·gang scheduling
ZeroNews内网穿透11 小时前
内网部署 Halo 建站,用 ZeroNews 免费内网穿透安全发布到公网(无公网 IP 也能 HTTPS 访问)
docker·https·内网穿透·nas·反向代理·halo·zeronews
哈__1 天前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes