Files
oam/knowledge base/kubernetes/drain nodes.md
2023-07-16 22:40:55 +02:00

1.4 KiB

Drain nodes in K8S clusters

Table of contents

  1. TL;DR
  2. Further readings
  3. Sources

TL;DR

  1. Cordon the Nodes.
    This marks each Node as unschedulable and prevents new Pods to start on them.

    $ kubectl cordon 'kworker-rj2'
    node/kworker-rj2 cordoned
    
  2. Drain the nodes.
    This evicts Pods already running on the Nodes.

    $ kubectl drain 'kworker-rj2' --grace-period=300 --ignore-daemonsets=true
    node/kworker-rj2 already cordoned
    WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-fl8dl, kube-system/kube-proxy-95vdf
    evicting pod default/my-dep-557548758d-d2pmd
    pod/my-dep-557548758d-d2pmd evicted
    node/kworker-rj2 evicted
    
  3. Do to the Nodes what you need to do.

  4. Uncordon the Nodes. This makes them available for scheduling again.

    $ kubectl uncordon 'kworker-rj2'
    node/kworker-rj2 uncordoned
    

Further readings

Sources

All the references in the further readings section, plus the following: