如何使用`service.spec.externalIPs`而不是`--type = LoadBalancer`在AWS上公开Kubernetes服务?

时间:2020-03-19 19:14:06

标签: amazon-web-services kubernetes

我已经使用kops在AWS上部署了Kubernetes集群,并且能够使用带有--type=LoadBalancer的服务来公开我的Pod:

kubectl run sample-nginx --image=nginx --replicas=2 --port=80
kubectl expose deployment sample-nginx --port=80 --type=LoadBalancer

但是,我无法通过使用主节点的公共IP指定service.spec.externalIPs来使其正常工作。

我已允许进入指定端口的流量,并使用https://kubernetes.io/docs/concepts/services-networking/service/#external-ips作为文档。

任何人都可以澄清如何在不使用云提供商本地负载均衡器的情况下在AWS上公开服务吗?

1 个答案:

答案 0 :(得分:0)

如果您想避免使用Loadbalancer,请使用NodePort类型的服务。

NodePort通过静态端口(NodePort)在每个节点的IP上公开服务。 创建了ClusterIP服务路由的NodePort服务。您可以通过以下请求从外部获得NodePort服务:

<NodeIP>:<NodePort> 

这意味着,如果您使用该端口访问任何节点,则可以访问您的服务。值得记住的是,NodePort是高编号的端口(30 000-32767)

这里专门返回到AWS,这是他们的官方文档,其中介绍了如何公开服务以及NodePort

请注意有关启用端口的非常重要的信息:

注意:在从外部群集访问 NodeIP:NodePort 之前,必须启用节点的安全组以允许 通过服务端口传入的流量。

让我知道这是否有帮助。