测试环境服务出现问题,服务一直报错认证超时,检查pod,发现如下情况:

  1. 异常节点的pod可以ping通本地宿主机的ip,但是ping本地宿主机的网关没有回显(通过tcpdump发现的)
  2. 异常节点的pod可以ping通正常节点的pod
  3. 异常节点的pod去ping正常节点的宿主机ip,正常节点使用tcpdump抓包,发现返回是正常,但是pod内部还是没有ping通的回显
  4. 异常节点的宿主机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的更多相关文章

  1. k8s集群节点更换ip 或者 k8s集群添加新节点

    1.需求情景:机房网络调整,突然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,所以有了k8s集群节点更换ip一说:同时,k8s集群节点更换ip也相当于k8s集群添加新节点 ...

  2. 利用容器逃逸实现远程登录k8s集群节点

    某天, 某鱼说要吃瞄, 于是...... 李国宝:边缘计算k8s集群SuperEdge初体验 ​ zhuanlan.zhihu.com 图标 照着上一篇文章来说,我这边边缘计算集群有一堆节点. 每个节 ...

  3. K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 张振(守辰) ...

  4. 集群实战(2):K8S集群节点退出加入操作

    以下报错网上其实也可以找到并解决,但是偏零碎我只是根据自己的在使用中遇到的问题做个汇总. 文章目录 首先删掉节点 node重新加入 参考文档 首先删掉节点 注意:以下操作都是在master下操作. 一 ...

  5. k8s 集群 节点状态显示notready

    一般情况下 我们是在maste节点上安装网络插件的,然后在join node 节点,这样导致node节点可能无法加载到这些插件 使用 journalctl -f -u kubelet 显示如下内容 N ...

  6. 二进制部署1.23.4版本k8s集群-5-部署Master节点服务

    1.安装Docker 在21.22.200三台机器上安装Docker.安装命令: 在21.22.200三台主机上部署Docker. ~]# curl -fsSL https://get.docker. ...

  7. Kubernetes实战总结 - 阿里云ECS自建K8S集群

    一.概述 详情参考阿里云说明:https://help.aliyun.com/document_detail/98886.html?spm=a2c4g.11186623.6.1078.323b1c9b ...

  8. 强大多云混合多K8S集群管理平台Rancher入门实战

    @ 目录 概述 定义 为何使用 其他产品 安装 简述 规划 基础环境 Docker安装 Rancher安装 创建用户 创建集群 添加Node节点 配置kubectl 创建项目和名称空间 发布应用 偏好 ...

  9. China Azure中部署Kubernetes(K8S)集群

    目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...

随机推荐

  1. ubuntu18.04 安装谷歌chrome浏览器

    将下载源添加到系统源列表 # sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/source.li ...

  2. 使用 arguments 对象

    arguments 对象表示参数集合,它是一个伪类数组,拥有与数组相似的结构,可以通过数组下标的形式访问函数实参值,但是没有基础 Array 的原型方法. //函数没有定义形参,但是在函数体内通过 a ...

  3. Go语言实战-爬取校花网图片

    一.目标网站分析 爬取校花网http://www.xiaohuar.com/大学校花所有图片. 经过分析,所有图片分为四个页面,http://www.xiaohuar.com/list-1-0.htm ...

  4. 经典定长指令-修改EIP

    1.0x70~0x7F EIP无法像通用寄存器那样用mov来修改,只能通过类似于jz,JNB,JNE JBE,call等的跳转指令来进行修改 条件跳转,后跟一个字节立即数的偏移(有符号),共两个字节. ...

  5. 【PTA】5-2 下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即“小时:分钟:秒”,当小时等于24小时,置为0。

    5-2 下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即"小时:分钟:秒",当小时等于24小时,置为0. #include <stdio.h> ...

  6. MCU软件最佳实践——矩阵键盘驱动

    1.矩阵键盘vs独立按键 在mcu应用开发过程中,独立按键比较常见,但是在需要的按键数比较多时,使用矩阵键盘则可以减少io占用,提高系统资源利用率.例如,某mcu项目要求有16个按钮,如果采用独立按键 ...

  7. VScode远程连接服务器

    VScode远程连接服务器 1.远程服务器安装rmate,在远程服务器上执行以下操作 wget https://raw.githubusercontent.com/sclukey/rmate-pyth ...

  8. golang中goroutine协程调度器设计策略

    goroutine与线程 /* goroutine与线程1. 可增长的栈os线程一般都有固定的栈内存,通常为2MB,一个goroutine的在其声明周期开始时只有很小的栈(2KB),goroutine ...

  9. IntelliJ IDEA 热部署,修改java文件 不用重启tomcat

    详情见大佬:https://www.cnblogs.com/chenweichu/articles/6838842.html

  10. 使用VSCode在本地电脑上对树莓派远程开发

    目的及原理 有时身边没有额外的显示器和键盘,或者有时树莓派在另一个屋子连接着路由器,那么当我们想在树莓派上做开发时就可以使用VS Code的远程开发能力.下面一张图显而易见地说明了远程开发的工作原理( ...