【问题标题】:How can I assign a static IP to my EKS service?如何为我的 EKS 服务分配静态 IP?
【发布时间】:2020-05-22 13:15:14
【问题描述】:

我有一个 EKS 集群。

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

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

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

我知道 AWS Elastic IP 与 Kubernetes 一起使用有一个注解,

但它仅从 Kubernetes 1.16 开始可用,并且 EKS 仅支持最高 1.14。

那么我有哪些选项可以为我的服务分配一些静态 IP 并配置我的 DNS 以指向该 IP?

【问题讨论】:

    标签: amazon-web-services kubernetes nginx-ingress amazon-eks


    【解决方案1】:

    您可以在 AWS 上预置弹性 IP 并使用该 IP 配置服务。

    Ex:
    type: LoadBalancer 
    loadBalancerIP: xxxxx
    

    【讨论】:

    • 这行不通。您将收到以下错误消息:“无法为 AWS ELB 指定 LoadBalancerIP”
    【解决方案2】:

    Assigning Static IP Address to AWS Load Balancer

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

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

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

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

    【讨论】:

      【解决方案3】:

      在创建 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
        ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-03
        • 2013-07-06
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 1970-01-01
        • 2018-12-25
        • 1970-01-01
        相关资源
        最近更新 更多