如何为 EKS 服务分配静态 IP?

ale*_*rsh 6 amazon-web-services kubernetes amazon-eks nginx-ingress

我有一个 EKS 集群。

我创建了我的服务并使用 ingress-nginx 公开它。

ingress-nginx 外部 IP 显示为 DNS 名称而不是 IP。

如何连接我的私有域以指向我的 EKS 服务?

我知道有一个将 AWS Elastic IP 与 Kubernetes 结合使用的注释,

但它仅从 Kubernetes 1.16 开始可用,而 EKS 最多仅支持 1.14。

那么我有什么选择可以为我的服务分配一些静态 IP 并配置我的 DNS 以指向这个 IP?

小智 9

为 AWS 负载均衡器分配静态 IP 地址

在这种情况下,这篇文章的答案仍然正确。

Amazon 进行负载平衡的方式是根据需要扩展和缩小接口来处理请求负载。这就是为什么他们为您分配域名而不是 IP 地址,因为您的负载均衡器可能有多个物理接口,并且 IP 地址会经常更改。

如果您只想为负载均衡器创建一个 DNS 名称,则可以通过任何 DNS 提供商创建一条CNAME指向 AWS 所配置的负载均衡器的 DNS 名称的记录来简单地完成此操作。如果您使用 Route53,那就更简单了,因为您只需创建一条带有 DNS 名称别名的 A 记录即可。

我希望这有帮助。FWIW,除非您仅将负载均衡器部署在一个可用区中,否则不可能为您的负载均衡器获取单个静态 IP 地址。


Thu*_*eef 9

在创建 LoadBalancer 服务(这将创建一个实际的负载均衡器)时,您现在可以通过注释通过 id 指定预先分配的弹性 IP。

例子:

apiVersion: v1
kind: Service
metadata:
  name: some-name
  annotations:
    # only network load balancer supports static IP
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
    # comma-separated list of Elastic IP ids
    # the length of the list must be equal to the number of subnets
    service.beta.kubernetes.io/aws-load-balancer-eip-allocations: eipalloc-abcd0000,eipalloc-abcd0001,eipalloc-abcd0002
  ...
spec:
  type: LoadBalancer
  ...
Run Code Online (Sandbox Code Playgroud)