在 Kubernetes 集群中,你可以通过使用 nodeSelector、nodeAffinity 和 taints 与 tolerations 来将一个 deployment 部署到指定的节点上,并确保该节点上只运行此 deployment。以下是具体步骤:
-  给目标节点打标签: 
 选择一个节点,并给它打上一个唯一的标签。比如你可以将节点打上role=dev-node标签:kubectl label nodes <your-node-name> role=dev-node
-  使用 nodeSelector绑定 Deployment 到特定节点:
 在你的 Deployment 配置文件中,使用nodeSelector将该 Deployment 绑定到带有特定标签的节点上。以下是一个示例配置:apiVersion: apps/v1 kind: Deployment metadata:name: dev-deployment spec:replicas: 1selector:matchLabels:app: dev-apptemplate:metadata:labels:app: dev-appspec:containers:- name: dev-containerimage: your-image:latestnodeSelector:role: dev-node
-  给节点添加 taint: 
 为确保该节点只运行此deployment,你可以给该节点添加一个taint,使得其他deployment无法调度到该节点。比如:kubectl taint nodes <your-node-name> dedicated=dev:NoSchedule
-  在 Deployment 中添加 tolerations:
 在 Deployment 配置文件中添加tolerations,允许其调度到有taint的节点上:apiVersion: apps/v1 kind: Deployment metadata:name: dev-deployment spec:replicas: 1selector:matchLabels:app: dev-apptemplate:metadata:labels:app: dev-appspec:containers:- name: dev-containerimage: your-image:latestnodeSelector:role: dev-nodetolerations:- key: "dedicated"operator: "Equal"value: "dev"effect: "NoSchedule"
通过以上步骤,你可以确保你的 dev-deployment 只部署在指定节点上,并且该节点上只能部署这个 dev-deployment。