如果我想在kubernetes中使用NodePort,如何知道节点中哪个端口可用

时间:2019-06-27 06:14:04

标签: kubernetes

我想在使用NodePort时指定端口,但是我如何知道所有节点上都可用的端口,我不想出现端口冲突。

4 个答案:

答案 0 :(得分:1)

正确的方法是让Kubernetes从默认分配的范围(30000–32767)中自动选择nodePort。不要在您的Yaml中包含nodePort

答案 1 :(得分:0)

您可以使用来获得所有服务

kubectl get svc --all-namespaces

然后您可以grep使用该类型。

在那里您可以看到所有分配的端口。这是基本的管道和输出过滤。

kubectl get svc --all-namespaces | grep ClusterIP | while read -r _ _ _ _ _ port _; do echo "$port" ; done

答案 2 :(得分:0)

您可以获取所有服务,grep节点端口并查看结果。

$ kubectl get services --all-namespaces -o yaml |grep "nodePort:"|sort
  nodePort: 30215
  nodePort: 30274
  nodePort: 30312
  nodePort: 30342
  nodePort: 30344
  nodePort: 30386
  nodePort: 30517
  nodePort: 30738
  nodePort: 30863
  nodePort: 31063
  nodePort: 31162
  nodePort: 31445

或者,如果您想使用服务名称等更详尽的清单,则使用json输出管道到jq。

编辑:节点端口的端口范围通常为30000-32767,应保留给Kubernetes使用,以免发生冲突。

答案 3 :(得分:0)

您可以执行netstat | grep <port>

如果将类型字段设置为NodePort,则Kubernetes控制平面将在--service-node-port-range标志指定的范围内分配端口(默认值:30000-32767)。每个节点都会将每个端口(每个节点上的相同端口号)代理到您的服务中。