跳转至

节点维护

节点维护

kubectl cordon node02
kubectl get nodes
kubectl drain node02 --ignore-daemonsets --delete-emptydir-data --force

参数解释

  • kubectl drain:这是 Kubernetes 中用来准备节点维护的命令,它会将节点上运行的 Pod 驱逐掉并标记该节点为不可调度,以便进行升级、修复或其他维护工作。
  • node02:这是你要操作的节点名称。此命令会在该节点上执行驱逐操作。

其他参数说明:

  • --ignore-daemonsets:该选项指示 kubectl drain 忽略 DaemonSet 类型的 Pod。DaemonSet 是一种确保每个节点上都运行一个 Pod 的资源类型,在进行节点维护时,这些 Pod 不会被驱逐,因为它们通常需要在每个节点上都存在。
  • --delete-emptydir-data:此选项指示删除 EmptyDir 卷中的数据。EmptyDir 是一种临时存储卷,通常在 Pod 生命周期内有效。如果你希望驱逐 Pod 时清理其中的临时数据,可以启用此选项。
  • --force:这个选项用于强制驱逐那些没有正常终止的 Pod。例如,某些 Pod 可能由于配置错误或其他问题无法优雅地终止,通过使用 --force,你可以强制删除这些 Pod,尽管这样做可能会导致数据丢失或其他问题。使用时需要小心。

这条命令的作用是:

  • 驱逐节点 node02 上的所有 Pod。
  • 忽略 DaemonSet 类型的 Pod,不会驱逐它们。
  • 删除 EmptyDir 卷中的临时数据。
  • 强制驱逐可能无法正常终止的 Pod。

在执行完 kubectl drain 后,节点会被标记为不可调度(kubectl cordon),并且没有新的 Pod 会被调度到这个节点上。此时,您可以对节点进行升级、修复或其他维护操作。