![向 Kubernetes 集群中的每个 pod 添加静态路由的最佳方法是什么?](https://linux22.com/image/776688/%E5%90%91%20Kubernetes%20%E9%9B%86%E7%BE%A4%E4%B8%AD%E7%9A%84%E6%AF%8F%E4%B8%AA%20pod%20%E6%B7%BB%E5%8A%A0%E9%9D%99%E6%80%81%E8%B7%AF%E7%94%B1%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我有 3 个节点运行着几个OpenVPN pods
,每个 pod 都有一个 VPN 网络100.70.0.0/16
,连接到这些 pod 的客户端会接收这个范围内的 IP 地址,例如,假设客户端100.70.162.91
连接到其中一个 pod。
现在,我想在这个集群上添加更多运行不同服务的 Pod,并且每个 Pod 必须能够与每个 VPN 客户端通信。到目前为止,我使用 AWS ECS 执行此操作的一大步骤是添加路由,例如在客户端使用 AWS API 连接后在集群 VPC 的子网路由表上添加路由,只要所有 Pod 都在同一网络上,ip route add 100.70.192.91/32 via <OpenVPN-pod-IPv4>/32
此方法似乎也有效。docker-compose
Kubernetes
但是,现在我正尝试从 ECS 迁移到 Kubernetes,但似乎找不到在 Kubernetes 上添加集群范围的网络静态路由的任何方法。
在 Kubernetes 上实现这一点的最佳方法是什么?
答案1
如果您使用 vanilla k8s 而不是 ECS,则可以选择在工作节点上添加此类路由。因此,到非 k8s(VPN 客户端网络与 k8s pods 网络不同)网络的 pod 流量将通过工作节点路由表传出。您需要在工作节点上向 VPN 客户端网络添加静态路由。您设置的路由目的地为 vpn-pod IP。可以从任何 k8s 工作节点访问它。