OpenShift 集群为项目提供专属节点

背景介绍

在生产实践中,某些系统因一些特殊的要求,需要独占节点,即专属节点:具有特殊要求的应用POD必须运行在这些专属节点上;同时这些节点不为其它应用服务。本文将提供一种具体的配置策略,以满足这种特殊的调度需求。
该策略主要使用到两种工具:

  1. 节点标签实现应用与节点的绑定
  2. 污点配置实现其它应用不会被调度到该节点。

设置步骤

  1. 为专属节点设置特定标签LABEL:dedicated=sys0,及设置污点
$ oc label node node-10 dedicated=sys0
$ oc adm taint nodes node-10 dedicated=sys0:NoSchedule
  1. 在使用专属节点的应用编排中绑定的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:
...
  1. 使用专属节点的应用编排中指定的标签及容忍污点
spec:
  tolerations:
  - key: "dedicated"
    operator: "Equal"
    value: "sys0"
    effect: "NoExecute"

注意,本例中使用的operator是"Equal",会比较污点的键与值。如果operator使用"Exists",则应用可以容忍所有带有dedicated污点。

去除专属节点操作

要是需要去除专属节点的限制,让它恢复成一个正常应用的节点。只需要将它的污点移除即可。

$ oc adm taint nodes dedicated-
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章