我有 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 工作节点访问它。