【问题标题】:routing traffic to a public Kubernetes service on AWS EC2将流量路由到 AWS EC2 上的公共 Kubernetes 服务
【发布时间】:2015-05-06 13:41:28
【问题描述】:

我有一个在 Amazon EC2 上的 CoreOS 实例上运行的 kubernetes (0.15) 集群

当我创建一个想要公开访问的服务时,我目前将 EC2 实例的一些私有 IP 地址添加到服务描述中,如下所示:

{
  "kind": "Service",
  "apiVersion": "v1beta3",
  "metadata": {
    "name": "api"
  },
  "spec": {
    "ports": [
      {
        "name": "default",
        "port": 80,
        "targetPort": 80
      }
    ],
    "publicIPs": ["172.1.1.15", "172.1.1.16"],
    "selector": {
      "app": "api"
    }
  }
}

然后我可以将这些 IP 添加到 ELB 负载平衡器并将流量路由到这些机器。

但要使其正常工作,我需要维护集群中所有正在运行的服务中所有机器的列表,这感觉不对。

目前推荐的解决方法是什么?

  • 如果我知道服务的 PortalIP,有没有办法让它在 AWS VPC 基础设施中可路由?
  • 是否可以将外部静态(弹性)IP 分配给服务并进行路由?

(我知道createExternalLoadBalancer,但这似乎还不支持AWS)

【问题讨论】:

    标签: amazon-ec2 kubernetes


    【解决方案1】:

    如果有人会提出这个问题,那么我想让您知道,最新的 kubernetes 版本中提供了外部负载均衡器支持。

    Link to the documentation

    【讨论】:

      【解决方案2】:

      您似乎对空间有很好的了解 - 不幸的是,我没有任何好的解决方法给您。

      CreateExternalLoadBalancer 确实还没有准备好 - 由于 AWS 的负载均衡器与 GCE 和 Openstack 的负载均衡器有多么不同,它需要对服务基础设施进行一些大修才能使其在 AWS 上运行。

      不幸的是,没有简单的方法可以让 PortalIP 或外部静态 IP 直接路由到支持服务的 pod,因为这样做需要在任何 pod 移动或重新创建时更新路由基础设施。您必须拥有到集群内节点的 PortalIP 或外部 IP 路由,这就是您已经有效地使用 PublicIPs 字段和 ELB 所做的事情。

      您现在对负载均衡器所做的工作可能是最佳选择 - 它基本上是 CreateExternalLoadBalancer 可用后所做的事情。您可以改为将实例的外部 IP 放入 PublicIPs 字段,然后通过其中一个访问服务,但这将外部连接与您使用的节点 IP 的生命周期紧密耦合。

      【讨论】:

        猜你喜欢
        • 2021-06-17
        • 2019-02-03
        • 2021-12-03
        • 2015-09-01
        • 2019-10-03
        • 2021-05-04
        • 2021-06-28
        • 2021-05-23
        • 1970-01-01
        相关资源
        最近更新 更多