# 将 Pod 指派给节点

你可以约束一个 Pod 以便 **限制** 其只能在特定的节点上运行， 或优先在特定的节点上运行。有几种方法可以实现这点，推荐的方法都是用标签选择算符来进行选择。&#x20;

你可以使用下列方法中的任何一种来选择 Kubernetes 对特定 Pod 的调度：

* 与节点标签匹配的 nodeSelector
* 亲和性与反亲和性
* nodeName 字段
* Pod 拓扑分布约束



<mark style="color:orange;">**NodeSelector对节点的选择是强制性的，假如配置了NodeSelector为ssd=true，那么如果集群中没有匹配的节点，这个Pod将一直处于Pending状态。**</mark>

在生产环境中可能会有这样的需求：

* **某些Pod优先选择有ssd=true标签的节点，如果没有再考虑部署到其他节点**。
* 某些Pod需要部署在ssd=true和type=physical的节点上，但是**优先**部署在ssd=true的节点上。
* 同一类应用的Pod尽量不要部署或**不允许部署在同一个节点**或者**符合某个标签的一类节点上**。
* **相互依赖的两个Pod尽量或必须部署在同一个节点上**。
