如何使用NodePort在外部公开Kubernetes服务

Pyr*_*bie 17 kubernetes

我在Mac OSX上运行CoreOS k8s集群,这意味着它在VirtualBox + Vagrant中运行

我有我的service.yaml文件:

spec:
  type: NodePort
Run Code Online (Sandbox Code Playgroud)

当我输入:

kubectl get services
Run Code Online (Sandbox Code Playgroud)

我知道了:

NAME             CLUSTER_IP       EXTERNAL_IP   PORT(S)    SELECTOR                                
kubernetes       10.100.0.1       <none>        443/TCP    <none>                             
my-frontend      10.100.250.90    nodes         8000/TCP   name=my-app
Run Code Online (Sandbox Code Playgroud)

什么是"节点"外部IP?如何从外部访问我的前端?

Vya*_*nis 18

除了"NodePort"类型的服务之外,还有一些其他方法可以与集群外部的kubernetes服务进行交互:

  • 使用服务类型"LoadBalancer".它仅适用于某些云提供商,不适用于虚拟机,但我认为了解该功能会很好.链接到文档
  • 使用称为"入口"的最新功能之一.以下是手册中的描述"入口是允许入站连接到达集群服务的规则集合.它可以配置为提供外部可访问的URL,负载平衡流量,终止SSL,提供基于名称的虚拟主机等服务"..链接到文档
  • 如果kubernetes不是严格的要求,你可以切换到最新的openshift起源(这是"类固醇上的kubernetes")你可以使用称为"路由器"的原始功能.

  • 这不是问题的答案。因此答案是无效的,因为您做出了“云提供商”或“网络应用程序”或“openshift”之类的假设。 (2认同)

小智 8

我假设你正在使用MiniKube for Kubernetes.在这种情况下,要标识您的节点IP地址,请使用以下命令:

.\minikube.exe ip
Run Code Online (Sandbox Code Playgroud)

如果公开的服务是type = Nodeport,要检查公开的端口,请使用以下命令:

.\kubectl.exe describe service <service-name>
Run Code Online (Sandbox Code Playgroud)

检查结果中的节点端口.此外,如果您希望通过良好的UI获得所有这些详细信息,则可以在以下地址启动Kubernetes仪表板:

<Node-ip>:30000
Run Code Online (Sandbox Code Playgroud)