1 标记不可调度
kubectl cordon node-name
此命令用于将指定的 Kubernetes 节点标记为不可调度状态。这意味着 Kubernetes 调度器将不会在该节点上调度新的 Pod。此操作通常用于维护或升级节点时,确保不会有新的工作负载被分配到该节点上。
2 清理工作节点 Pod
kubectl drain node-name --delete-emptydir-data --ignore-daemonsets --force
此命令用于从指定的 Kubernetes 节点上驱逐所有 Pod。--delete-emptydir-data
选项会删除使用 emptyDir
卷的 Pod 数据。--ignore-daemonsets
选项允许忽略 DaemonSet 管理的 Pod,因为这些 Pod 通常需要在每个节点上运行。--force
选项用于强制驱逐 Pod,即使某些 Pod 无法正常终止。
3 删除工作节点
kubectl delete node node-name
此命令用于从 Kubernetes 集群中删除指定的节点。删除节点后,该节点将不再属于集群的一部分,并且其上的所有资源将被释放。
4 清理 Kubernetes 工作节点组件
4.1 Kubeadm 管理的集群
kubeadm reset
此命令用于重置由 kubeadm
管理的 Kubernetes 节点。它会清理节点上的所有 Kubernetes 组件和数据,包括 etcd 数据、证书、配置文件等。执行此命令后,节点将恢复到未加入集群的状态。
4.2 K3s 管理的集群
/usr/local/bin/k3s-agent-uninstall.sh
此脚本用于卸载由 k3s
管理的 Kubernetes 节点上的代理组件。它会清理所有与 k3s
相关的文件、服务和配置,使节点恢复到未加入 k3s
集群的状态。执行此脚本后,节点将不再作为 k3s
集群的一部分运行。