我是否需要 AWS ALB 才能在 EKS 中应用 运行?
Do I need AWS ALB for application running in 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 中发布这个自动生成的主机名?如果我重新部署服务,它会改变吗?
是的,您需要它来使用 AWS ALB Ingress Controller 创建 Kubernetes Ingress,以下 link 解释如何在 EKS 中使用 ALB 作为 Ingress 控制器:This
您的 EKS 集群中的应用程序并不严格需要 AWS ALB,但您可能需要它。
采用 Kubernetes 时,可以很方便地管理 Kubernetes 集群中的一些基础设施部分,其方式与管理应用程序的方式类似,并且在某些情况下,应用程序与负载均衡器的配置之间存在紧密耦合,因此以同样的方式管理基础设施是有意义的。
type LoadBalancer corresponds to a network load balancer (also known as L4 load balancer). There is also Kubernetes Ingress 的 Kubernetes Service
,对应应用程序负载均衡器(也称为 L7 负载均衡器)。
要在 Kubernetes 中使用 ALB 或 Ingress
,您还需要安装 Ingress Controller。对于 AWS,您应该安装 AWS Load Balancer Controller,此控制器现在还提供一些功能,以防您想要使用网络负载均衡器,例如通过使用 IP 模式或使用弹性 IP 公开服务。使用预先配置的 IP 应该有助于使用 Route53。
查看有关 EKS network load balancing and EKS application load balancing
的 EKS 文档
正如其他人已经提到的,是的,这不是必需的,但使用 ALB 非常有帮助。
有几种不同的解决方案..我最喜欢的解决方案是
- 使用像 ingress-nginx 这样的 Ingress Controller(Kubernetes 有多种不同的 Ingress Controller,提供了一个很好的比较 here
- 将 IngressController 服务配置为使用 NodePort 并使用像 30080 这样的端口
- 例如使用 Terraform 创建自己的 AWS ALB,并将 NodePort 30080 添加到 TargetGroup
- 创建 Ingress 资源以配置 IngressController
如果您还有一些问题,请在这里提问:)
不,您不需要 ALB,是的,您可以自动使用 Route53。这是一篇描述后者的好文章:
https://www.padok.fr/en/blog/external-dns-route53-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 中发布这个自动生成的主机名?如果我重新部署服务,它会改变吗?
是的,您需要它来使用 AWS ALB Ingress Controller 创建 Kubernetes Ingress,以下 link 解释如何在 EKS 中使用 ALB 作为 Ingress 控制器:This
您的 EKS 集群中的应用程序并不严格需要 AWS ALB,但您可能需要它。
采用 Kubernetes 时,可以很方便地管理 Kubernetes 集群中的一些基础设施部分,其方式与管理应用程序的方式类似,并且在某些情况下,应用程序与负载均衡器的配置之间存在紧密耦合,因此以同样的方式管理基础设施是有意义的。
type LoadBalancer corresponds to a network load balancer (also known as L4 load balancer). There is also Kubernetes Ingress 的 Kubernetes Service
,对应应用程序负载均衡器(也称为 L7 负载均衡器)。
要在 Kubernetes 中使用 ALB 或 Ingress
,您还需要安装 Ingress Controller。对于 AWS,您应该安装 AWS Load Balancer Controller,此控制器现在还提供一些功能,以防您想要使用网络负载均衡器,例如通过使用 IP 模式或使用弹性 IP 公开服务。使用预先配置的 IP 应该有助于使用 Route53。
查看有关 EKS network load balancing and EKS application load balancing
的 EKS 文档正如其他人已经提到的,是的,这不是必需的,但使用 ALB 非常有帮助。
有几种不同的解决方案..我最喜欢的解决方案是
- 使用像 ingress-nginx 这样的 Ingress Controller(Kubernetes 有多种不同的 Ingress Controller,提供了一个很好的比较 here
- 将 IngressController 服务配置为使用 NodePort 并使用像 30080 这样的端口
- 例如使用 Terraform 创建自己的 AWS ALB,并将 NodePort 30080 添加到 TargetGroup
- 创建 Ingress 资源以配置 IngressController
如果您还有一些问题,请在这里提问:)
不,您不需要 ALB,是的,您可以自动使用 Route53。这是一篇描述后者的好文章: https://www.padok.fr/en/blog/external-dns-route53-eks