k8s calico网络排错

2024-04-02 20:32

本文主要是介绍k8s calico网络排错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本地三个节点搭k8s,结果前两个节点的pod互通,第三个节点不能与前两个的pod通信。

查看路由,发现第三个节点没有建立通信的路由。

 

hadoop002节点路由详情,加粗为路由详情。hadoop003无此路由。

 

[root@hadoop002 beh]# route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

default gateway 0.0.0.0 UG 100 0 0 ens192

172.16.31.0 0.0.0.0 255.255.255.0 U 100 0 0 ens192

172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0

172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-f33940ad6bcc

192.168.72.192 0.0.0.0 255.255.255.192 U 0 0 0 *

192.168.72.241 0.0.0.0 255.255.255.255 UH 0 0 0 cali835b424b828

192.168.72.243 0.0.0.0 255.255.255.255 UH 0 0 0 calid14de0a1fe6

192.168.72.244 0.0.0.0 255.255.255.255 UH 0 0 0 calibae9713a5c9

192.168.72.245 0.0.0.0 255.255.255.255 UH 0 0 0 calif15216f38d6

192.168.72.247 0.0.0.0 255.255.255.255 UH 0 0 0 cali07b42699ca8

192.168.72.253 0.0.0.0 255.255.255.255 UH 0 0 0 calied45b975889

192.168.135.128 hadoop001 255.255.255.192 UG 0 0 0 tunl0

 

[root@hadoop002 beh]# ip route

default via 172.16.31.254 dev ens192 proto static metric 100

172.16.31.0/24 dev ens192 proto kernel scope link src 172.16.31.122 metric 100

172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1

172.18.0.0/16 dev br-f33940ad6bcc proto kernel scope link src 172.18.0.1

blackhole 192.168.72.192/26 proto bird

192.168.72.241 dev cali835b424b828 scope link

192.168.72.243 dev calid14de0a1fe6 scope link

192.168.72.244 dev calibae9713a5c9 scope link

192.168.72.245 dev calif15216f38d6 scope link

192.168.72.247 dev cali07b42699ca8 scope link

192.168.72.253 dev calied45b975889 scope link

192.168.135.128/26 via 172.16.31.121 dev tunl0 proto bird onlink

 

想手动添加下面两条路由,均没有成功。

ip route add 172.16.31.121/23 dev tunl0

route add -net 192.168.135.128 gw hadoop001 metric 0 netmask 255.255.255.192 dev tunl0

 

删除calico etcd数据后,重置k8s,路由信息全部消失。

查看calico-node日志,发现报错

bird: BGP: Unexpected connect from unknown address

 

重置了好几遍,结果所有节点都不通了,没办法动用calicoctl。

对比hadoop001集群和dlw1集群,dlw1状态正常。发现了一些异常,hadoop001出现的是172.18.0.1这类奇怪的ip,不是实际主机ip,进一步查看calico-node的日志发现更多线索。

[root@hadoop001 beh]# DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config ./calicoctl node status

Calico process is running.

IPv4 BGP status

+--------------+-------------------+-------+----------+---------+

| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |

+--------------+-------------------+-------+----------+---------+

| 172.18.0.1 | node-to-node mesh | start | 07:16:12 | Connect |

| 172.19.0.1 | node-to-node mesh | start | 07:16:12 | Connect |

+--------------+-------------------+-------+----------+---------+

IPv6 BGP status

No IPv6 peers found.

-----------------------------分割线--------------------------------

[root@dlw1 tbc]# DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config ./calicoctl node status

Calico process is running.

IPv4 BGP status

+--------------+-------------------+-------+------------+-------------+

| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |

+--------------+-------------------+-------+------------+-------------+

| 172.16.40.2 | node-to-node mesh | up | 2018-11-03 | Established |

| 172.16.40.3 | node-to-node mesh | up | 2018-11-03 | Established |

+--------------+-------------------+-------+------------+-------------+

IPv6 BGP status

No IPv6 peers found.

 

hadoop002日志也发现了这个现象,

2018-11-06 07:27:35.639 [INFO][85] int_dataplane.go 574: Received *proto.HostMetadataUpdate update from calculation graph msg=hostname:"hadoop002" ipv4_addr:"172.18.0.1"

2018-11-06 07:27:35.639 [INFO][85] int_dataplane.go 574: Received *proto.HostMetadataUpdate update from calculation graph msg=hostname:"hadoop003" ipv4_addr:"172.19.0.1"

2018-11-06 07:27:35.639 [INFO][85] int_dataplane.go 574: Received *proto.HostMetadataUpdate update from calculation graph msg=hostname:"hadoop001" ipv4_addr:"172.16.31.121"

 

dlw2的日志则显示是主机ip

18-11-03 02:51:33.907 [INFO][197] syncer.go 473: Started receiving snapshot snapshotIndex=0x19a8

2018-11-03 02:51:33.908 [INFO][197] int_dataplane.go 574: Received *proto.HostMetadataUpdate update from calculation graph msg=hostname:"dlw1" ipv4_addr:"172.16.40.1"

2018-11-03 02:51:33.919 [INFO][197] int_dataplane.go 574: Received *proto.HostMetadataUpdate update from calculation graph msg=hostname:"dlw2" ipv4_addr:"172.16.40.2"

2018-11-03 02:51:33.919 [INFO][197] int_dataplane.go 574: Received *proto.HostMetadataUpdate update from calculation graph msg=hostname:"dlw3" ipv4_addr:"172.16.40.3"

 

https://github.com/projectcalico/calico/issues/1941

参考这边文章,在calico-node的yaml文件中配置ip查找策略,定义自动查找且指定网络接口,重启node后网络打通。

- name: IP

value: "autodetect"

- name: IP_AUTODETECTION_METHOD

value: "interface=ens192"

 

[root@hadoop001 beh]# DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config ./calico

 

ifctl node status

Calico process is running.

 

IPv4 BGP status

+---------------+-------------------+-------+----------+-------------+

| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |

+---------------+-------------------+-------+----------+-------------+

| 172.16.31.122 | node-to-node mesh | up | 09:51:28 | Established |

| 172.16.31.123 | node-to-node mesh | up | 09:51:28 | Established |

+---------------+-------------------+-------+----------+-------------+

 

IPv6 BGP status

No IPv6 peers found.

这篇关于k8s calico网络排错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870985

相关文章

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.