kubernetes k8s使用相同端口、目标端口和节点端口创建服务

kmb7vmvb  于 2023-01-04  发布在  Kubernetes
关注(0)|答案(1)|浏览(465)

我需要创建Kubernetes服务,其nodePort由K8S自动分配,并且port/targetPort必须等于nodePort。(需求来自spark YARN节点作为服务后端的规范)也许我可以先创建一个固定的虚拟端口/targetPort和一个自动分配的nodePort,然后更新服务,将port/targetPort设置为与nodePort相同的值。但是,有没有更好的方法来做到这一点呢?

njthzxwz

njthzxwz1#

在k8上公开资源有两种主要方式
使用kubectl expose命令的第一个命令:使用这个方法,您可以选择要公开的pod/deploy,但不能选择nodePort值。
另一种方法是使用kubectl create service nodeport命令:使用这个你可以设置端口,目标端口和节点端口。
如果您知道要公开的pod的标签(例如app: superPod),则可以创建一个文件,然后将标签(例如TOREPLACE)替换为所选端口的值(例如30456):
在Linux上:

portValue=30456 && k create service nodeport TOREPLACE \
--node-port=$portValue --tcp=$portValue --dry-run=client -oyaml > file.yaml \
&& sed -i 's/app: TOREPLACE/app: yourselector/g' file.yaml \
&& sed -i 's/name: TOREPLACE/name: yourselector-name/g' file.yaml

这将创建具有首选值的文件。
之后,可以使用kubectl -f file.yaml apply应用该文件
但是,根据您的需要,如果您希望可靠地自定义资源,您可以尝试用途:
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/https://helm.sh/docs/
希望有帮助。

相关问题