gpt4 book ai didi

kubernetes - 如何为 Kubernetes 中服务或部署的所有 Pod 分配一个静态源 IP 地址?

转载 作者:行者123 更新时间:2023-12-02 11:46:41 25 4
gpt4 key购买 nike

考虑一个微服务 X它被容器化并部署在 Kubernetes 集群中。 X与支付网关通信 PG .但是,支付网关需要一个静态 IP 才能与它联系的服务,因为它维护着一个 IP 地址白名单,这些 IP 地址被授权访问支付网关。 X 的一种方式联系 PG是通过第三方代理服务器,如 QuotaGuard这将为服务提供一个静态 IP 地址 X支付网关可以将其列入白名单。
但是,kubernetes 中是否有内置机制可以使部署在 kube-cluster 中的服务获得静态 IP 地址?

最佳答案

Kubernetes 中还没有这方面的机制。

其他可能的解决方案:

  • 如果集群的节点位于 NAT 后面的私有(private)网络中,那么只需将网络的默认网关添加到 PG 的白名单中。
  • 如果白名单可以接受除单个 IP 之外的 cidr(例如 86.34.0.0/24),则将集群的网络 cidr 添加到白名单

  • 如果集群的每个节点都有一个公共(public) IP,并且您不能将 cidr 添加到白名单中,那么它会变得更加复杂:
  • 一种天真的方法是将所有节点的 IP 添加到白名单中,但它不能扩展到只有几个节点的小型集群之上。
  • 如果你有权管理你的网络,那么即使节点有公共(public) IP,你也可以为网络设置一个 NAT,它只针对以 PG 的 IP 作为目标的数据包。
  • 如果您没有对网络的管理访问权限,那么另一种方法是在某处分配一台具有静态 IP 的机器,并再次像上面一样使用 iptables NAT 使其充当代理。但是,这会引入单点故障。为了使其具有高可用性,您可以再次将其部署在具有少量 (2-3) 个副本的 kubernetes 集群上(这可以是运行 X 的同一个集群:见下文)。副本将使用 keepalived 共享一个 VIP,而不是使用其节点的 IP 与 PG 通信。这将被添加到 PG 的白名单中。 (您可以查看 easy-keepalived 并尝试直接使用它或从中学习它是如何工作的)。这需要集群上的高权限:您需要能够授予代理的 Pod NET_ADMINNET_RAW功能,以便他们能够添加 iptables 规则并设置 VIP。

  • 更新:

    在过去几天等待构建和部署的过程中,我已经完善了旧的 VIP-iptables 脚本,这些脚本以前用作裸机集群上的外部负载均衡器的替代品,因此现在它们也可以用于提供如我原始答案的最后一点所述,导出 VIP。你可以试一试: https://github.com/morgwai/kevip

    关于kubernetes - 如何为 Kubernetes 中服务或部署的所有 Pod 分配一个静态源 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60200424/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com