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

k8s+isulad 网络问题

按照我前面的博客中的配置安装calico,发现存在网络问题,具体现象如下:

1. 各节点配置的物理地址可以互访

2. pod 容器的地址段ip 只能在单个节点中互访,跨节点不能访问

使用calicoctl node status 查看BGP状态,正常

sudo calicoctl node status
Calico process is running.IPv4 BGP status
+--------------+-------------------+-------+------------+-------------+
| PEER ADDRESS |     PEER TYPE     | STATE |   SINCE    |    INFO     |
+--------------+-------------------+-------+------------+-------------+
| 10.12.70.141 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.142 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.144 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.145 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.146 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.147 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.148 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.149 | node-to-node mesh | up    | 2025-08-13 | Established |
| 10.12.70.150 | node-to-node mesh | up    | 2025-08-13 | Established |
+--------------+-------------------+-------+------------+-------------+IPv6 BGP status
No IPv6 peers found.// 查看本地路由
ip route
default via 10.12.70.129 dev enp3s1 proto dhcp src 10.12.70.143 metric 100 
10.12.70.128/25 dev enp3s1 proto kernel scope link src 10.12.70.143 metric 100 
22.244.22.128 via 10.12.70.144 dev enp3s1 proto 80 onlink 
22.244.22.128/26 via 10.12.70.144 dev enp3s1 proto 80 onlink 
22.244.40.0 via 10.12.70.146 dev enp3s1 proto 80 onlink 

查看本地路由发现不了vxlan.calico信息,路由表中缺少 Calico VXLAN 隧道路由。

起初我认为是中国电子云的vpc网络问题(因为我的k8s节点是建立在中国电子云的虚拟机上的),后来找售后技术讨论,排除了中国电子云问题。

开始怀疑是不是安全策略问题,就在原来基础上为每个节点的安全组做了pod和svc地址段的信任放行,问题依旧存在。

我把所有现象都贴给了DeepSeek让它帮我分析,结果它认为是calico配置模式有问题,BGP网络使用的VXLAN,这里的模式应该是"vxlanMode": "Always" ,而我当前的配置是vxlanMode: CrossSubnet 模式。这里可以通过如下命令查看当前配置信息:

sudo calicoctl get ippool default-ipv4-ippool -o yaml | grep vxlanMode

但是使用DeepSeek给的解决方案:

sudo calicoctl patch ippool default-ipv4-ippool -p '{"spec":{"vxlanMode": "Always"} }'//显示修改成功,但是再查看配置还是始终改不过来

于是我查了以下官网的文档,这里可参考:Installation reference | Calico Documentation

通过修改installation这个资源可以更改上述配置内容。具体配置如下:

// 查看当前配置信息
kubectl get installation default -n tigera-operator -o yaml
// 修改 calico 安装中的custom-resources.yaml配置文件,也可以将installation写在另外一个tigera-operator.yaml配置文件中// installation 内容
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:name: default
spec:# Configures Calico networking.serviceCIDRs:- "55.96.0.0/20"  //自定义svc的地址段calicoNetwork:ipPools:- name: default-ipv4-ippoolblockSize: 26cidr: 22.244.0.0/16   //pod地址段encapsulation: VXLAN  //主要修改这个值就可以改变vxlanMode的值natOutgoing: EnablednodeSelector: all()imagePullSecrets: []variant: Calicoregistry: docker.m.daocloud.io //自定义国内镜像拉取地址

这里建议不要完全参考DeepSeek给的修改方案,因为配置参数总有错误,如果拿不准可以查看以下calico的官方文档,也可以通过kubectl explain Installation.spec 往下查看,确认下面的参数项内容,往往DeepSeek在这个地方给的参数项压根就没有,或者从属归类有问题。

配置完后 使用如下命令更新配置,同时查看修改状态。

kubectl apply -f custom-resources.yaml
//重启更新容器
kubectl rollout restart deployment tigera-operator -n tigera-operator
//等待容器启动正常
kubectl wait --for=condition=available deployment/tigera-operator -n tigera-operator --timeout=90s//查看配置修改情况
sudo calicoctl get ippool default-ipv4-ippool -o yaml | grep vxlanMode{"apiVersion":"projectcalico.org/v3","kind":"IPPool","metadata":{"annotations":{},"generation":1,"labels":{"app.kubernetes.io/managed-by":"tigera-operator"},"name":"default-ipv4-ippool","resourceVersion":"1351"},"spec":{"allowedUses":["Workload","Tunnel"],"assignmentMode":"Automatic","blockSize":26,"cidr":"22.244.0.0/16","ipipMode":"Never","natOutgoing":true,"nodeSelector":"all()","vxlanMode":"Always"}}vxlanMode: Always
// 现在已经是Always了//接下来重启calico-node,你也可以查看calico-system 命名空间下的部署都启动一遍
kubectl get all -n calico-system
kubectl rollout restart daemonset calico-node -n calico-system
kubectl rollout restart deploy calico-kube-controllers -n calico-system
...

此时再在节点上ping容器的ip就可以通了,通过之前做的nettools测试镜像可以测试容器之间的通断情况。

查看本地路由:

//ip route
22.244.40.0/26 via 22.244.40.0 dev vxlan.calico onlink
22.244.112.0 dev vxlan.calico scope link

也可以看到vxlan.calico信息了说明vxlan的路由通道已经正常建立起来了。

网+络问题解决。

 

http://www.dtcms.com/a/331823.html

相关文章:

  • 【奔跑吧!Linux 内核(第二版)】第7章:系统调用的概念
  • 基本电子元件:电阻器
  • 读书笔记:《我看见的世界》
  • 日志系统(log4cpp)
  • 主进程如何将客户端连接分配到房间进程
  • Android UI(一)登录注册 - Compose
  • 基于Python和Dify的成本对账系统开发
  • OpenCV Canny 边缘检测
  • 软考中级【网络工程师】第6版教材 第3章 局域网 (上)
  • Linux中tty与8250-uart的虐恋(包括双中断发送接收机制)
  • Linux中Samba服务配置与使用指南
  • YouBallin正式上线:用Web3重塑创作者经济
  • 会议通信系统核心流程详解(底稿1)
  • JVM的逃逸分析深入学习
  • 17.2 修改购物车商品
  • RLVR(可验证奖励的强化学习):大模型后训练的客观评估策略
  • 负载因子(Load Factor) :哈希表(Hash Table)中的一个关键性能指标
  • AI大模型+Meta分析:助力发表高水平SCI论文
  • 多任务并发:进程管理的核心奥秘
  • 【记录】Apache SeaTunnel 系统监控信息
  • 使用ETL工具同步Oracle的表到Doris
  • 使用load data或insert导入10w条数据
  • 51单片机-GPIO介绍
  • 网络组播技术详解
  • 深入理解 `std::any`:C++ 中的万能容器
  • 俄罗斯加强互联网管控,限制 WhatsApp 和 Telegram 通话
  • P5663 [CSP-J2019] 加工零件
  • 腾讯K8S环境【TKE】中,如何驱逐指定pod重新部署?
  • Kafka下载和安装
  • Python:如何处理WRF投影(LCC, 兰伯特投影)?