k8s创建端口、targetPort和nodePort相同的服务



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

在k8s上公开资源有两种主要方法

第一个使用kubectl expose命令:使用这个命令,您可以选择要公开的pod/deploy,但不能选择nodePort值。然后,正如您已经知道的,您必须在创建的yaml

上设置nodeport值。另一种方法是使用kubectl create service nodeport命令:使用这个命令,您可以设置端口,目标端口和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/

希望有帮助。

相关内容

  • 没有找到相关文章

最新更新