每次我在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%
答案 0 :(得分:1)
如果您只是在构建单个Deployment的新版本,则应该检查管道对Service所做的工作。您想在不修改服务的情况下对部署进行kubectl apply
和滚动更新(前提是在部署上设置了策略)(因此不能修改delete
和create
)。如果您执行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。