当前位置: 首页 > news >正文

完美解决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 

  • 更新配置
sysctl --system
2.2、安装IPVS
yum -y install 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
2.3、配置kube-proxy
  • 在master上操作,因使用kubeadmin安装,所以操作方式如下
kubectl edit cm kube-proxy -n kube-system
  • 找到mode的位置,把mode修改为ipvs

2.4、重启kube-proxy
  • 在master重启kube-proxy
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

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

相关文章:

  • windows搭建gitlab教程
  • PostgreSQL中所的锁
  • MQTT通信协议使用说明
  • 防雷接地+防雷工程施工综合方案
  • 最新红盟云卡个人自动发卡开源系统源码+全开源无加密+虚拟商品在线售卖平台
  • 4、FFmpeg命令行操作5
  • 无人驾驶相关硬件汇总
  • 如何将 Docsify 项目部署到 CentOS 系统的 Nginx 中
  • echarts 多toolti同时触发图表实现
  • 数理统计的基本概念(二)
  • 操作系统安装在哪里?
  • Spark 平障录
  • YOLO目标检测——无人机检测数据集下载分享【含对应voc、coco和yolo三种格式标签】
  • Android studio Build Log乱码+错误: 找不到符号符号
  • QT在线安装指南
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Android交互
  • Java 多线程编程之:notify 和 wait 用法
  • Java深入 - 深入理解Java集合
  • Laravel Telescope:优雅的应用调试工具
  • mac修复ab及siege安装
  • magento2项目上线注意事项
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 七牛云假注销小指南
  • 前端路由实现-history
  • 入门到放弃node系列之Hello Word篇
  • 设计模式(12)迭代器模式(讲解+应用)
  • 思考 CSS 架构
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序button引导用户授权
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ionic异常记录
  • 湖北分布式智能数据采集方法有哪些?
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #android不同版本废弃api,新api。
  • #Linux(make工具和makefile文件以及makefile语法)
  • (1)STL算法之遍历容器
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)Dubbo快速入门、介绍、使用
  • (转)memcache、redis缓存
  • (转)大道至简,职场上做人做事做管理
  • (转)重识new
  • .NET 4.0中的泛型协变和反变
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 反射 Reflect
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Angular 基础] - 指令(directives)
  • [Apio2012]dispatching 左偏树
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境
  • [CSS]中子元素在父元素中居中