【问题标题】:How to have the static ELB endpoint for kubernates deployments如何为 kubernetes 部署提供静态 ELB 端点
【发布时间】:2018-12-21 07:00:46
【问题描述】:

每次我在 kubernates 中部署新版本时。我得到了不同的外部 IP,在下面的情况下是 afea383cbf72c11e8924c0a19b12bce4-xxxxx.us-east-1.elb.amazonaws.com

$ kubectl get services -o wide -l appname=${APP_FULLNAME_SYSTEST},stage=${APP_SYSTEST_ENV}
NAME                                        TYPE           CLUSTER-IP      EXTERNAL-IP                                                               PORT(S)         AGE       SELECTOR
test-systest-lb-https   LoadBalancer   123.45.xxx.21   afea383cbf72c11e8924c0a19b12bce4-xxxxx.us-east-1.elb.amazonaws.com   443:30316/TCP   9d        appname=test-systest,stage=systest

我怎样才能拥有一个静态外部 IP (elb),以便我可以将它链接到路由 53。我是否必须在我的 Kubernates 部署 yml 文件中包含一些内容。

其他细节:我正在使用下面的负载均衡器

spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 443
    targetPort: 8080
    protocol: TCP
  selector:
    appname: %APP_FULL_NAME%
    stage: %APP_ENV%

【问题讨论】:

    标签: kubernetes amazon-elb


    【解决方案1】:

    如果您只是对单个部署进行新构建,那么您应该检查您的管道对服务所做的工作。您想在不修改服务的情况下对部署进行kubectl apply 和滚动更新(前提是在部署上设置了策略)(因此不是deletecreate)。如果您执行kubectl get services,您应该会看到它的年龄(您的输出显示为 9d,这很好),kubectl describe service <service_name> 将显示其上的所有事件。

    我猜只是想要一个外部 IP 条目,您可以指向像“afea383cbf72c11e8924c0a19b12bce4-xxxxx.us-east-1.elb.amazonaws.com”和not a truly static IP。如果你确实想要一个真正的静态 IP,你不会像这样得到它,但你 can now try NLB

    如果您的意思是希望多个部署(不同的微服务)共享一个 IP,那么您可以安装一个入口控制器并使用 ELB 公开它。然后,当您部署新应用程序时,您为每个应用程序使用一个 Ingress 资源来告诉控制器将它们暴露在外部。因此,您可以将所有应用程序放在同一个外部 IP 上,但在不同的路径或子域下路由。 nginx ingress controller is a good option

    【讨论】:

    • 嗨 Ryan,感谢您的帮助,实际上我正在部署 yml 上使用负载均衡器。在我的问题上添加。实际上,并非所有时间,但有时当我重新部署时,您会看到 us-east-1.elb.amazonaws.com 之前的字母数字部分正在发生变化。这很难与 53 号路线联系起来
    • 您是否还看到了服务变更记录?发生这种情况时是否对服务进行了更改(例如,选择器的更改)?您应该能够拥有稳定的服务并使用 AWS 更新部署 - github.com/aws-samples/aws-workshop-for-kubernetes/tree/master/… 有一个示例
    • 耶。我实际上是在做滚动更新。因此,每当我部署新版本时,elb 端点都不会改变,但如果我删除并重新创建,那么只有它会发生变化。所以我想我可以使用 elb 端点并将其与 route53 链接。它会起作用。我猜
    • 是的,您可以在重新创建服务时小心更新 route53,您可以尝试将更新频率降至最低。另一种选择可能是使用 Ingress。然后,您只需部署和公开一次入口控制器(使用它自己的 ELB),这部分不会改变。当您想要公开新事物或以不同方式公开它们时,只有入口资源/规则会发生变化,并且所有请求都将通过入口控制器 stackoverflow.com/questions/53865013/…
    • 我只是在这里提到的入口部分。 itnext.io/… 。希望这能解决我的问题。似乎入口是最好的选择。谢谢瑞恩
    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 2021-01-31
    • 2021-03-19
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2016-01-24
    • 2015-02-05
    相关资源
    最近更新 更多