# cali-sync **Repository Path**: wanghuiic/cali-sync ## Basic Information - **Project Name**: cali-sync - **Description**: 将calico创建的/32本地路由同步到子表 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-10 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 在路由子表中自动添加cali本地直连路由。 # 使用方法 ## 安装cali-sync到目标节点 ``` ./install.sh ``` ## 卸载cali-sync ``` ./uninstall.sh ``` # 解决的问题是什么 节点自身需要按策略路由(policy routing) 访问 Pod 时,主表路由被策略规则跳过,就必须在子表里提供同样的 /32 路由。 例如,get pod cidr on node h-19 ``` "10.233.69.0/24" ``` get route 10.233.69.34 on host h-19 ``` 10.233.69.34 from 10.103.39.7 via 10.103.39.30 dev ens11np0 table 101 uid 1000 cache ``` 这将导致一个问题, 在h-19主机上 ``` ping 10.233.69.34 ``` 将会去 table 101 寻找路由, ``` $ ip r s t 101 default via 10.103.39.30 dev ens11np0 proto static ``` 但是网关 10.103.39.30 并不知道 10.233.69.34 的存在。导致宿主节点反而ping不通Pod IP。 所以,需要仿照main表 ``` 10.233.69.34 dev calia9d43c8e484 scope link ``` 在 table 101 添加相应的本地路由, ``` $ ip r s t 101 default via 10.103.39.30 dev ens11np0 proto static 10.233.69.34 dev calia9d43c8e484 scope link ``` 其他node一直可以ping通10.233.69.34,因为走的是tunl0,跟本地访问不同。 # cali-sync服务做了什么 根据Pod IP的路由信息,到相应的子表添加缺失的本地直连路由。 ip route monitor长期监听,出现新的路由时,自动添加到子表。 如果有cali接口被删除,则路由会被系统清除。