首页 > 解决方案 > 如何使用 `service.spec.externalIPs` 而不是 `--type=LoadBalancer` 在 AWS 上公开 Kubernetes 服务?

问题描述

我已经在 AWS 上部署了一个 Kubernetes 集群,kops并且可以使用以下服务公开我的 pod --type=LoadBalancer

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

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

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

谁能澄清如何在不使用云提供商的本机负载均衡器的情况下在 AWS 上公开服务?

标签: amazon-web-serviceskubernetes

解决方案


如果您想避免使用,Loadbalancer那么您可以使用NodePort服务类型。

NodePort在静态端口 (the NodePort) 上公开每个节点 IP 上的服务。 ClusterIP服务NodePort路由创建的服务。您将能够NodePort通过以下请求从外部访问该服务:

<NodeIP>:<NodePort> 

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

在这里专门回到 AWS 是他们的官方文档如何公开服务以及NodePort解释。

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

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

让我知道这是否有帮助。


推荐阅读