我想在 kubernetes 集群中的不同端口上运行多个服务,并且想知道如何检查哪些端口可用并且不会与我的服务产生任何冲突。我还想知道每个端口上的服务名称,以便我可以更好地理解我的配置。
有类似的问题涉及验证哪个NodePorts
已经在使用中。你可以找到它here https://stackoverflow.com/a/39260160/11148139.
该命令将显示所有ports
来自所有namespaces
哪个是NodePort
类型并且已经在使用中。
$ kubectl get svc --all-namespaces -o go-template='{{range .items}}{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}{{end}}'
30007
30107
30207
30307
30407
30676
但是,请记住,Kubernetes 不允许您第二次使用同样的内容NodePort
.
$ cat<<eof|kubectl apply -f -
> apiVersion: v1
> kind: Service
> metadata:
> name: my-service-test
> spec:
> type: NodePort
> selector:
> app: MyApp
> ports:
> - port: 80
> targetPort: 80
> nodePort: 30307
> eof
The Service "my-service-test" is invalid: spec.ports[0].nodePort: Invalid value: 30307: provided port is already allocated
此外,还有一些非常具体的场景,当您想要使用中提到的默认范围之外的端口时K8s docs https://kubernetes.io/docs/concepts/services-networking/service/#nodeport。
如果您添加一个特殊标志,有一个解决方法--service-node-port-range
根据请求的范围,准入控制器允许您创建NodePort
带端口80
and 443
。有关如何操作的详细信息,请检查这个答案 https://stackoverflow.com/a/58732307/11148139.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)