我有一个要求,我想在特定节点上安排特定类型的pod,并且不应该在该节点上安排其他类型的pod。例如,
假设我有3个工作节点 - w1,w2和w3我想要类型的pod(比如POD-w2)应该总是在w2上安排,并且不应该在w2上安排其他类型的pod。
向worker 2添加标签type = w2。
使用节点选择器或节点关联来计划该节点上所需的pod。
对于其他pod,使用节点反关联来防止其他pod被安排到worker 2
要专门为特定类型的pod使用节点,您应该taint
您的节点,如here所述。然后,在部署/窗格定义中为节点污点创建toleration
,以确保只能在受污染的节点上调度该类型的pod。
为实现这一目标,我们必须通过标记节点来污染节点以及亲和力。所需的容器应该能够容忍污染并且也能够满足亲和力。通过这种方式,pod将仅在专用节点上进行调度。
例:
kubectl taint nodes <dedicated_node_name> dedicated=myservice:NoSchedule
kubectl label node <dedicated_node_name> dedicated=myservice
然后在部署规范中使用容忍和亲和力
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: dedicated
operator: In
values:
- myservice
和
tolerations:
- effect: NoSchedule
key: dedicated
operator: Equal
value: myservice