如何使用 loadbalancer 类型为外部服务提供弹性 ip 到 aws eks?
How to provide elastic ip to aws eks for external service with type loadbalancer?
我正在使用 eks 1.16。我有一项具有面向 Internet 的 Loadbalancer 类型的服务。
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"
我想向该外部服务提供elastic-ip/static-ip。
问题:
对于 Loadbalancer 类型,当我删除服务时,它会删除 loadbalancer。
当我再次安装时,它将使用新的 ip 创建新的负载均衡器。
用例: 如果我愿意 uninstall/delete 该服务仍然 IP 必须相同。
如何提供elastic-ip/static-ip?
有一个注解为network-load-balancer提供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"
它将始终为该负载均衡器使用 elasticIp。
更多eks注释。
https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html
我正在使用 eks 1.16。我有一项具有面向 Internet 的 Loadbalancer 类型的服务。
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"
我想向该外部服务提供elastic-ip/static-ip。
问题: 对于 Loadbalancer 类型,当我删除服务时,它会删除 loadbalancer。 当我再次安装时,它将使用新的 ip 创建新的负载均衡器。
用例: 如果我愿意 uninstall/delete 该服务仍然 IP 必须相同。
如何提供elastic-ip/static-ip?
有一个注解为network-load-balancer提供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"
它将始终为该负载均衡器使用 elasticIp。
更多eks注释。
https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html