k8s集群节点ping不通其他主机的ip
测试环境服务出现问题,服务一直报错认证超时,检查pod,发现如下情况:
- 异常节点的pod可以ping通本地宿主机的ip,但是ping本地宿主机的网关没有回显(通过tcpdump发现的)
- 异常节点的pod可以ping通正常节点的pod
- 异常节点的pod去ping正常节点的宿主机ip,正常节点使用tcpdump抓包,发现返回是正常,但是pod内部还是没有ping通的回显
- 异常节点的宿主机ip是可以正常ping通其他节点的ip的
排查过程
本地宿主机网络检查
ping 122.18.125.33
终端正常,有回显,证明宿主机的网络是没有问题
route
ping 122.18.125.254
宿主机ping本机的网关(
通过route命令可以查看网关ip
),也有回显,也是正常的
pod网络检查
kubectl get pod -n xxx -o wide
公司服务原因,所以对于名称做了和谐
通过
-o wide
参数,查看pod所在节点的ip,以及pod内部的ip
kubectl exec -it -n xxx <pod-name> -- ping 122.18.125.234
--
是为了不进入pod操作,为了不频繁exit这个时候,pod是可以ping通本地宿主机的ip的
kubectl exec -it -n xxx <pod-name> -- ping 122.18.125.254
这个时候,pod去ping网关,发现没有任何回显,在没有抓包之前,认为是网络不通
tcpdump检查网络
检查flannel网卡
- 在pod网络正常的节点操作
tcpdump -i flannel.1 -nvvv icmp
通过tcpdump命令,抓取flannel.1网卡,抓icmp协议(
ping命令使用的是icmp协议
)
- 在pod网络异常的节点操作
kubectl exec -it -n xxx <pod-name> -- ping 10.244.5.5
此时是ping网络正常节点的pod的ip,验证flannel网卡是否异常
最终的结果是,两个节点之间的pod是可以正常通信的,说明flannel网卡没有问题
如果flannel检查有问题,则先重启flannel,再重启docker后再尝试一下
systemctl restart flanneld && systemctl restart docker
检查宿主机网卡
- 在pod网络正常的节点操作
tcpdump -i eth0 -nvvv icmp
通过tcpdump命令,抓取eth0网卡,抓icmp协议
- 在pod网络异常的节点操作
kubectl exec -it -n xxx <pod-name> -- ping 122.18.125.33
此时ping的是pod网络正常的节点宿主机ip,发现pod内没有回显,但是tcpdump获取的信息如下
13:00:07.647480 IP (tos 0x0, ttl 60, id 42390, offset 0, flags [DF], protr ICMP (1), length 84)
122.18.125.234 > 122.18.125.33 ICMP echo request, id 12141, seq 1, length 84
iptables检查
iptabels -t nat -nL | grep "10.244.29.2"
过滤出pod的ip,发现是有DNAT转发的,iptables的规则也是没有问题的
解决方法
实在查找不出异常,于是选择了重启network服务,结果就正常了。。。
systemctl restart network
k8s集群节点ping不通其他主机的ip的更多相关文章
- k8s集群节点更换ip 或者 k8s集群添加新节点
1.需求情景:机房网络调整,突然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,所以有了k8s集群节点更换ip一说:同时,k8s集群节点更换ip也相当于k8s集群添加新节点 ...
- 利用容器逃逸实现远程登录k8s集群节点
某天, 某鱼说要吃瞄, 于是...... 李国宝:边缘计算k8s集群SuperEdge初体验 zhuanlan.zhihu.com 图标 照着上一篇文章来说,我这边边缘计算集群有一堆节点. 每个节 ...
- K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 张振(守辰) ...
- 集群实战(2):K8S集群节点退出加入操作
以下报错网上其实也可以找到并解决,但是偏零碎我只是根据自己的在使用中遇到的问题做个汇总. 文章目录 首先删掉节点 node重新加入 参考文档 首先删掉节点 注意:以下操作都是在master下操作. 一 ...
- k8s 集群 节点状态显示notready
一般情况下 我们是在maste节点上安装网络插件的,然后在join node 节点,这样导致node节点可能无法加载到这些插件 使用 journalctl -f -u kubelet 显示如下内容 N ...
- 二进制部署1.23.4版本k8s集群-5-部署Master节点服务
1.安装Docker 在21.22.200三台机器上安装Docker.安装命令: 在21.22.200三台主机上部署Docker. ~]# curl -fsSL https://get.docker. ...
- Kubernetes实战总结 - 阿里云ECS自建K8S集群
一.概述 详情参考阿里云说明:https://help.aliyun.com/document_detail/98886.html?spm=a2c4g.11186623.6.1078.323b1c9b ...
- 强大多云混合多K8S集群管理平台Rancher入门实战
@ 目录 概述 定义 为何使用 其他产品 安装 简述 规划 基础环境 Docker安装 Rancher安装 创建用户 创建集群 添加Node节点 配置kubectl 创建项目和名称空间 发布应用 偏好 ...
- China Azure中部署Kubernetes(K8S)集群
目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...
随机推荐
- centos7 RPM命令使用
rpm -qa 软件名称 ---查看软件是否安装成功 rpm -ql 软件名称 ---查看软件中都有什么 rpm -qf 文件名称(绝对路径) ---查看属于哪个软件 rpm -ivh 包 ...
- Go的WaitGroup源码分析
WaitGroup 是开发中经常用到的并发控制手段,其源代码在 src/sync/waitgroup.go 文件中,定义了 1 个结构体和 4 个方法: WaitGroup{}:结构体. state( ...
- PCx安装使用
PCx安装使用 注意:不要到Mittleman的网页下给的那个网站去下载,版本太老,只能在REDHAT操作系统上编译,且不能运行 mkdir PCx cd PCx/ git clone https:/ ...
- Cplex用法
Cplex用法 1.将问题转化为LP问题: cplex -c read mps/nw460.mps change problem type lp opt 2.将问题转化为LP问题并输出问题: cple ...
- 记录未解决的问题:docker中无法启动mysqld
首先在docker中安装mysql server的包: sudo yum install mysql sudo yum install mariadb-server mariadb /usr/libe ...
- Mybatis插件,能做的事情真的很多
大家好,我是架构摆渡人.这是实践经验系列的第九篇文章,这个系列会给大家分享很多在实际工作中有用的经验,如果有收获,还请分享给更多的朋友. Mybatis是我们经常用的一款操作数据库的框架,它的插件机制 ...
- Servlet Cookie的使用
HTTP(超文本传输协议)是一个基于请求与响应模式的无状态协议.无状态主要指 2 点: 协议对于事务处理没有记忆能力,服务器不能自动维护用户的上下文信息,无法保存用户状态: 每次请求都是独立的,不会受 ...
- java继承基础内容
1 /* 2 * 继承的好处: 3 * 1,提高了代码的复用性. 4 * 2,让类与类之间产生了关系,给第三个特征多态提供了前提. 5 * 6 * 7 * java中支持单继承.不直接支持多继承,但对 ...
- python列表删除和排序
1.del message[0]---知道位置不知道值 2.message.remove('a')----知道值不知道位置 3.message.sort()--正向永久排序 4.message.sor ...
- Homework_1
寒假第一份作业 一.博客园部分 1.个人博客园链接 Click here 2.markdown界面截图 我用typora编辑 所以贴上typora界面的截图 二.Github部分 1.个人Github ...