【问题标题】:assign static IP to LoadBalancer service using k8s on aws在 aws 上使用 k8s 将静态 IP 分配给 LoadBalancer 服务
【发布时间】:2019-07-23 23:26:27
【问题描述】:

目的:在AWS上创建一个IP为静态的k8s LoadBalancer服务

我在 GKE 上通过预先分配一个静态 IP 并通过loadBalancerIP 属性传递它来实现这一点没有问题:

$ kubectl apply -f - <<EOF
apiVersion: v1
kind: Service
metadata:
  name: dave
loadBalancerIP: 17.18.19.20
...etc...

但在 AWS 中执行相同操作会导致 externalIP 卡在 &lt;pending&gt; 并且 Events 历史记录中出现错误

删除 loadBalancerIP 值允许 k8s 启动 Classic LB:

$ kubectl describe svc dave
Type:                   LoadBalancer
IP:                     100.66.51.123
LoadBalancer Ingress:   ade4d764eb6d511e7b27a06dfab75bc7-1387147973.us-west-2.elb.amazonaws.com
...etc...

但 AWS 明确警告我 IP 是短暂的(有时有 2 个),而经典 IP 似乎不支持附加静态 IP

感谢您的宝贵时间

【问题讨论】:

  • 目前无法为 ELB 分配静态 IP(您提到的 AWS 警告消息也说明了这一点)。为什么首先需要一个静态 IP?
  • 我们将 IP 传递给证书生成工具,该工具不适用于“ade4d76....us-west-2.elb.amazonaws.com”类型名称,并传入一个临时 IP如果发生故障,会使证书无效
  • 嗯,这确实是一个艰难的过程。唯一想到的是在 ELB 之上添加您自己的带有 EC2/EIP 的自定义代理层,但这会增加额外的跃点和复杂性。这也更难以扩展,因为新实例/IP 将产生新证书。此外,k8s 不会自动创建这样的层 - 所以总体上不是一个好的解决方案..
  • 新的 Network Load Balancer 与静态的弹性 IP 配合使用。它适用于您的应用程序吗?它与k8s集成吗?我不知道。
  • 现在好像支持了:aws.amazon.com/blogs/opensource/…

标签: amazon-ec2 kubernetes


【解决方案1】:

正如@Quentin 所述,AWS 网络负载均衡器现在支持 K8s

https://aws.amazon.com/blogs/opensource/network-load-balancer-support-in-kubernetes-1-9/

Kubernetes 中的网络负载平衡

在 Kubernetes 1.9 版本中,我添加了对使用新的网络负载均衡器和 Kubernetes 服务的支持。这是一个 alpha 级别的功能,到目前为止还没有准备好用于生产集群或工作负载,所以在尝试之前请确保您还阅读了有关 NLB 的文档。通过 NLB 公开服务的唯一要求是添加带有 nlb 值的注解 service.beta.kubernetes.io/aws-load-balancer-type。

一个完整的例子如下所示:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
type: LoadBalancer

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2020-04-23
  • 2020-10-23
  • 1970-01-01
  • 2020-08-09
  • 2015-01-27
相关资源
最近更新 更多