我想在使用NodePort时指定端口,但是我如何知道所有节点上都可用的端口,我不想出现端口冲突。
答案 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)。每个节点都会将每个端口(每个节点上的相同端口号)代理到您的服务中。