kubernetes-handbook/cluster/node.md

1.6 KiB
Raw Blame History

Node

Node维护模式

kubectl drain NODE [Options]
  • 它会删除该NODE上由ReplicationController, ReplicaSet, DaemonSet, StatefulSet or Job创建的Pod
  • 不删除mirror pods因为不可通过API删除mirror pods
  • 如果还有其它类型的Pod比如不通过RC而直接通过kubectl create的Pod并且没有--force选项该命令会直接失败
  • 如果命令中增加了--force选项则会强制删除这些不是通过ReplicationController, Job或者DaemonSet创建的Pod

有的时候不需要evict pod只需要标记Node不可调用可以用kubectl cordon命令。

恢复的话只需要运行kubectl uncordon NODE将NODE重新改成可调度状态。

Taint tolerant

// taint节点阻止新的pod上来 kubectl taint nodes node08 dedicated=maintaining:NoSchedule // label节点只允许指定的pod上来 kubectl label nodes node08 hyper/nodetype=maintaining

// 然后在Pod定义中加入如下annotation

annotations:
      scheduler.alpha.kubernetes.io/tolerations: '[{"key":"dedicated", "value":"maintaining"}]'
      scheduler.alpha.kubernetes.io/affinity: >
        {
          "nodeAffinity": {
            "requiredDuringSchedulingIgnoredDuringExecution": {
              "nodeSelectorTerms": [
                {
                  "matchExpressions": [
                    {
                      "key": "hyper/nodetype",
                      "operator": "In",
                      "values": ["maintaining"]
                    }
                  ]
                }
              ]
            }
          }
        }