【发布时间】: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 卡在 <pending> 并且 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集成吗?我不知道。
标签: amazon-ec2 kubernetes