Kubernetes 部署服务时是否有默认节点端口?

Kubernetes 部署服务时是否有默认节点端口?,kubernetes,google-cloud-platform,Kubernetes,Google Cloud Platform,我一直遵循这一指南: 其中包含以下行: kubectl expose deployment userapi --type=LoadBalancer --port 80 --target-port 8080 我只需访问该服务的外部IP即可访问该服务,无需指定节点端口。我不知道这是为什么。我想我需要做externalip:nodeport 谢谢快速回答: 如果创建类型为LoadBalancer的服务,它也将创建节点端口所需的所有资源。它并没有创建实际的服务,只是实现了所需的所有特性 您可以

我一直遵循这一指南:

其中包含以下行:

   kubectl expose deployment userapi --type=LoadBalancer --port 80 --target-port 8080
我只需访问该服务的外部IP即可访问该服务,无需指定节点端口。我不知道这是为什么。我想我需要做externalip:nodeport

谢谢

快速回答: 如果创建类型为
LoadBalancer
的服务,它也将创建
节点端口所需的所有资源。它并没有创建实际的服务,只是实现了所需的所有特性

您可以将服务类型视为一个层次结构,每次它添加一个新功能时,您都需要上一个功能


说明: 引用官方文件:

LoadBalancer:使用云提供商的负载平衡器对外公开服务。自动创建外部负载平衡器路由到的NodePort和ClusterIP服务

如果您创建或公开一个Noteport,它将被分配一个ClusterIp

NodePort:在静态端口(NodePort)的每个节点的IP上公开服务。自动创建NodePort服务路由到的ClusterIP服务。您可以通过请求以下内容,从集群外部联系NodePort服务:

为了完整性起见,在创建服务时,还将创建endpoint类型的新资源,该资源完全由Kubernetes管理,不应手动修改:

ClusterIP:在群集内部IP上公开服务。选择此值将使服务只能从集群内访问。这是默认的服务类型

端点:

端点是实现实际服务的端点的集合。 示例:名称:“mysvc”,子集:[{地址:[{“ip”:“10.10.1.1”}, {“ip”:“10.10.2.2”}],端口:[{“名称”:“a”,“端口”:8675},{“名称”:“b”, “端口:309}]},{地址:[{“ip”:“10.10.3.3}],端口:[{“名称”:“a”, “端口:93},{“名称”:“b”,“端口:76}]},]


Kubernetes服务是分层的。节点端口服务将包含clusterIP服务。负载平衡器服务将包含节点端口服务

如果执行命令
kubectl expose deployment userapi--type=LoadBalancer--port 80--target port 8080
Kubernetes将创建一个名为
userapi
的服务。现在,为了查看此服务的完整(生成的)yaml,只需执行以下操作:
kubectl get svc userapi-o yaml
。您将看到Kubernetes自动将节点端口分配给您的类型:loadBalancer服务

NodePort
:在静态端口(NodePort)上公开每个节点的IP上的服务。自动创建
节点端口
服务路由的
集群
服务。您可以通过请求
,从集群外部联系
节点端口
服务

LoadBalancer
:使用云提供商的负载平衡器从外部公开服务<自动创建外部负载平衡器路由到的代码>节点端口
群集IP
服务