当前位置: 首页 > 知识库问答 >
问题:

如何使用“service.spec.externalIP”而不是“--type=LoadBalancer”在AWS上公开库伯内特斯服务?

乐正玺
2023-03-14

我已经使用kops在AWS上部署了Kubernetes群集,并且我能够使用带有负载平衡器的服务公开我的POD:

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

然而,我无法通过指定服务来实现它。spec.externalIPs(我的主节点的公共IP)。

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

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

共有1个答案

尤研
2023-03-14

如果要避免使用负载平衡器,请使用NodePort服务类型。

NodePort在静态端口(NodePort)公开每个Node IP上的服务。NodePort服务路由是沿着NodePort创建的ClusterIP服务。您将能够通过请求从外部访问NodePort服务:

<NodeIP>:<NodePort> 

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

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

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

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

如果有帮助,请告诉我。

 类似资料:
  • 我是Kubernetes平台的新手,尝试启用部署在Kubernetes平台上的tomcat web app的HTTPS安全连接。我对舱单感到困惑。与部署、服务和入口控制器相关的yml。 那么,我是否也必须在部署(在端口:-containerPort:8080)服务(如端口:-端口:80 targetPort:8080协议:TCP名称:http)和入口(在后端:serviceName:tomcat

  • 在使用Google容器引擎时,人们会推荐GCP的本机负载平衡器还是Kubernetes服务type=负载平衡器选项? 人们推荐哪一种?

  • 我在aws上创建了一个简单的EKS集群,如https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples/eks-getting-started.所述 我在这个集群中创建了一个nginx部署和一个Loadbalancer类型的服务,如下所述。该配置在minikube上本地工作。 在AWS上,我可以

  • 我在windows 10中创建了两个在我的minikube环境中运行的POD。一个POD带有Spring boot应用程序容器,另一个POD带有mysql容器。对于Spring boot应用程序,服务类型为nodePort,对于MYSQL pod,服务类型为club sterIP。这意味着Mysql pod只需要在集群内部进行通信。但是对于Spring boot应用程序,需要从浏览器访问,所以我配

  • 希望你们都好, 我目前正在尝试将awx操作符部署到Kubernetes集群上,但在从集群外部访问该服务时遇到了一些问题。 目前,我已设置了以下服务: 我确实设置了一个名为

  • 库伯内特斯top(kubectl top)命令显示的内存使用情况与pod中运行Linuxtop命令不同。 我创建了 k8s 部署,其中 YAML 包含以下内存限制: 以下命令的输出如下所示: 运行linux top命令: 注意“free -g”还显示使用了11Gb。 问题是这与“kubectl顶部”相矛盾,后者仅显示使用了1205 mb。