我是否需要 AWS ALB 才能在 EKS 中运行应用程序?

时间:2021-01-01 10:57:31

标签: amazon-web-services kubernetes amazon-ecs amazon-eks

我使用 AWS ECS fargate 来运行我的应用程序。我正在迁移到 AWS EKS。当我使用 ECS 时,我部署了一个 ALB 将请求路由到我在 ECS 集群中的服务。

在 kubernete 中,我阅读了这个文档 https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer,似乎 Kubernete 本身有一个 loadbalance 服务。它似乎创建了一个外部主机名和 IP 地址。

所以我的问题是我是否需要部署 AWS ALB?如果不是,我如何在 route53 中发布这个自动生成的主机名?如果我重新部署服务,它会改变吗?

4 个答案:

答案 0 :(得分:1)

是的,您需要它来使用 AWS ALB 入口控制器创建 Kubernetes 入口,以下链接解释了如何在 EKS 中使用 ALB 作为入口控制器:This

答案 1 :(得分:1)

您的 EKS 集群中的应用程序并不严格需要 AWS ALB,但您可能需要它。

在采用 Kubernetes 时,以类似于管理应用程序的方式管理 Kubernetes 集群中的一些基础设施部分会很方便,并且在某些情况下,应用程序和负载均衡器的配置之间存在紧密耦合,因此它使以同样的方式管理基础设施。

type LoadBalancer 的 Kubernetes Service 对应于网络负载均衡器(也称为 L4 负载均衡器)。还有 Kubernetes Ingress 对应于应用程序负载均衡器(也称为 L7 负载均衡器)。

要在 Kubernetes 中使用 ALB 或 Ingress,您还需要安装 Ingress Controller。对于 AWS,您应该安装 AWS Load Balancer Controller,此控制器现在还提供功能,以防您想使用网络负载均衡器,例如通过使用 IP 模式或使用弹性 IP 公开服务。使用预先配置的 IP 应该有助于使用 Route53。

请参阅关于 EKS network load balancingEKS application load balancing 的 EKS 文档

答案 2 :(得分:0)

正如其他人已经提到的,是的,这不是必需的,但使用 ALB 非常有帮助。

对此有几种不同的解决方案..我最喜欢的解决方案是

  • 使用像 ingress-nginx 这样的入口控制器(Kubernetes 有多种不同的入口控制器可用,提供了一个很好的比较here
  • 将 IngressController 服务配置为使用 NodePort 并使用 30080 之类的端口
  • 以 Terraform 创建自己的 AWS ALB 为例,并将 NodePort 30080 添加到 TargetGroup
  • 创建一个 Ingress 资源来配置 IngressController

The whole traffic flow could look like this

如果您还有一些问题,请在这里提问:)

答案 3 :(得分:0)

不,您不需要 ALB,是的,您可以自动使用 Route53。这是一篇很好的文章,描述了后者: https://www.padok.fr/en/blog/external-dns-route53-eks