k8s集群节点ping不通其他主机的ip

简介: k8s集群节点ping不通其他主机的ip

测试环境服务出现问题,服务一直报错认证超时,检查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


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
Kubernetes API 调度
k8s中节点无法启动Pod
【10月更文挑战第3天】
135 6
|
5月前
|
存储 Kubernetes Docker
Kubernetes节点资源耗尽状态的处理
Kubernetes节点资源耗尽状态的处理
|
2月前
|
域名解析 网络协议 测试技术
IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试
理解IP地址、子网掩码、默认网关和DNS服务器的概念是有效管理和配置网络的基础。通过使用ping和telnet命令,可以测试网络连通性和服务状态,快速诊断和解决网络问题。这些工具和概念是网络管理员和IT专业人员日常工作中不可或缺的部分。希望本文提供的详细解释和示例能够帮助您更好地理解和应用这些网络配置和测试工具。
165 2
|
3月前
|
Kubernetes 应用服务中间件 Linux
多Master节点的k8s集群部署
多Master节点的k8s集群部署
|
5月前
|
存储 Kubernetes 调度
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
|
5月前
|
Kubernetes 调度 Perl
在K8S中,Pod多副本配置了硬亲和性,会调度到同⼀个节点上吗?
在K8S中,Pod多副本配置了硬亲和性,会调度到同⼀个节点上吗?
|
5月前
|
Kubernetes 负载均衡 调度
在K8S中,K8S外部节点访问Pod有哪些方式?
在K8S中,K8S外部节点访问Pod有哪些方式?
|
5月前
|
Kubernetes Unix Linux
k8s将节点容器运行时从Docker迁移到Containerd
k8s将节点容器运行时从Docker迁移到Containerd
|
5月前
|
Kubernetes 网络协议 调度
在K8S中,flannel可以固定节点IP和Pod的IP地址吗?
在K8S中,flannel可以固定节点IP和Pod的IP地址吗?
|
10天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。

热门文章

最新文章