背景介紹
在生產實踐中,某些系統因一些特殊的要求,需要獨佔節點,即專屬節點:具有特殊要求的應用POD必須運行在這些專屬節點上;同時這些節點不爲其它應用服務。本文將提供一種具體的配置策略,以滿足這種特殊的調度需求。
該策略主要使用到兩種工具:
- 節點標籤實現應用與節點的綁定
- 污點配置實現其它應用不會被調度到該節點。
設置步驟
- 爲專屬節點設置特定標籤LABEL:dedicated=sys0,及設置污點
$ oc label node node-10 dedicated=sys0
$ oc adm taint nodes node-10 dedicated=sys0:NoSchedule
- 在使用專屬節點的應用編排中綁定的Node
spec:
replicas: 1
template:
metadata:
name: nginx
labels:
app: nginx
spec:
nodeSelector:
dedicated: "sys0"
containers:
...
或
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: dedicated
operator: In
values:
- sys0
containers:
...
- 使用專屬節點的應用編排中指定的標籤及容忍污點
spec:
tolerations:
- key: "dedicated"
operator: "Equal"
value: "sys0"
effect: "NoExecute"
注意,本例中使用的operator是"Equal",會比較污點的鍵與值。如果operator使用"Exists",則應用可以容忍所有帶有dedicated污點。
去除專屬節點操作
要是需要去除專屬節點的限制,讓它恢復成一個正常應用的節點。只需要將它的污點移除即可。
$ oc adm taint nodes dedicated-