我需要创建Kubernetes服务,其nodePort由K8S自动分配,并且port/targetPort必须等于nodePort。(需求来自spark YARN节点作为服务后端的规范)也许我可以先创建一个固定的虚拟端口/targetPort和一个自动分配的nodePort,然后更新服务,将port/targetPort设置为与nodePort相同的值。但是,有没有更好的方法来做到这一点呢?
我需要创建Kubernetes服务,其nodePort由K8S自动分配,并且port/targetPort必须等于nodePort。(需求来自spark YARN节点作为服务后端的规范)也许我可以先创建一个固定的虚拟端口/targetPort和一个自动分配的nodePort,然后更新服务,将port/targetPort设置为与nodePort相同的值。但是,有没有更好的方法来做到这一点呢?
1条答案
按热度按时间njthzxwz1#
在k8上公开资源有两种主要方式
使用
kubectl expose
命令的第一个命令:使用这个方法,您可以选择要公开的pod/deploy,但不能选择nodePort值。另一种方法是使用
kubectl create service nodeport
命令:使用这个你可以设置端口,目标端口和节点端口。如果您知道要公开的pod的标签(例如
app: superPod
),则可以创建一个文件,然后将标签(例如TOREPLACE
)替换为所选端口的值(例如30456):在Linux上:
这将创建具有首选值的文件。
之后,可以使用
kubectl -f file.yaml apply
应用该文件但是,根据您的需要,如果您希望可靠地自定义资源,您可以尝试用途:
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/或https://helm.sh/docs/
希望有帮助。