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
服务