如何为Kubernates部署使用静态ELB端点

时间:2018-12-21 07:00:46

标签: kubernetes amazon-elb

每次我在kubernates中部署一个新版本。我得到的EXTERNAL-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%

1 个答案:

答案 0 :(得分:1)

如果您只是在构建单个Deployment的新版本,则应该检查管道对Service所做的工作。您想在不修改服务的情况下对部署进行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