好的,下面是一个使用 NodeAffinity 的例子:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker-1 # 所需调度到的节点名称
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
这个示例展示了如何使用 requiredDuringSchedulingIgnoredDuringExecution
对节点进行选择。在上述示例中,我们将 Pod 调度到名为 “worker-1” 的节点上。
在上面的 YAML 文件中,我们定义了一个名为 “nginx-deployment” 的 Deployment 对象,并设置了需要运行三个 Pod 副本。然后,在 Pod 模板的规范化部分中,我们指定了需要调度到哪些节点。
在这里,我们使用 nodeSelectorTerms
属性来描述匹配标签的策略,并将其与键值对 "kubernetes.io/hostname=worker-1"
进行匹配。因此,Pod 将只能够被调度到带有这个特定标签的节点上。
希望这个例子可以让您更好地理解如何使用 NodeAffinity 来控制 Pod 的部署位置。