如何使用负载均衡器类型向aws eks提供弹性IP以用于外部服务?

NIr*_*odi 6 amazon-elb elastic-ip kubernetes amazon-eks

我使用的是 eks 1.16。我有一项服务,其类型为面向互联网的负载均衡器。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
  name: kafka-test-3-0-external
  labels:
    helm.sh/chart: kafka-0.21.5
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: kafka-broker
    app.kubernetes.io/name: kafka
    app.kubernetes.io/instance: kafka-test-3
    pod: "kafka-test-3-0"
spec:
  type: LoadBalancer
  ports:
    - name: external-broker
      port: 19092
      targetPort: 19092
      protocol: TCP
#
  selector:
    app.kubernetes.io/component: kafka-broker
    app.kubernetes.io/name: kafka
    app.kubernetes.io/instance: kafka-test-3
    statefulset.kubernetes.io/pod-name: "kafka-test-3-0"
Run Code Online (Sandbox Code Playgroud)

我想向该外部服务提供 elastic-ip/static-ip 。

问题: 使用负载均衡器类型,当我删除服务时,它将删除负载均衡器。当我再次安装时,它将使用新的 IP 创建新的负载均衡器。

用例:如果我要卸载/删除该服务,IP 仍然必须相同。

如何提供elastic-ip/static-ip?

NIr*_*odi 4

有一个注释为网络负载均衡器提供elastic-ip

service.beta.kubernetes.io/aws-load-balancer-eip-allocations: eipalloc-05666791973f6a240

如果您使用 Amazon EKS 1.16 或更高版本,您可以通过添加以下注释将弹性 IP 地址分配给网络负载均衡器。将(包括 <>)替换为您的弹性 IP 地址的分配 ID。分配 ID 的数量必须与负载均衡器使用的子网数量相匹配。

注意:您不能将此注释用于内部负载均衡器

apiVersion: v1
kind: Service
metadata:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: "kafka-test-3-1.kafka.internal"
    external-dns.alpha.kubernetes.io/ttl: "60"
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
    service.beta.kubernetes.io/aws-load-balancer-eip-allocations: eipalloc-022b9722973f6a222
  name: kafka-test-3-1-external
  labels:
    helm.sh/chart: kafka-0.21.5
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: kafka-broker
    app.kubernetes.io/name: kafka
    app.kubernetes.io/instance: kafka-test-3
    pod: "kafka-test-3-1"
spec:
  type: LoadBalancer
  ports:
    - name: external-broker
      port: 19092
      targetPort: 19092
      protocol: TCP
#
  selector:
    app.kubernetes.io/component: kafka-broker
    app.kubernetes.io/name: kafka
    app.kubernetes.io/instance: kafka-test-3
    statefulset.kubernetes.io/pod-name: "kafka-test-3-1"
Run Code Online (Sandbox Code Playgroud)

它将始终使用该负载均衡器的elasticIp。

有关更多 eks 注释。

https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html