# k8s集群中Node磁盘爆满如何处理

# 移出Node节点

  • 首先从k8s集群中把该Node节点封锁、然后驱逐该Node节点上承载的Pod
#获取节点列表
kubectl get nodes

#封锁node,不让调度,驱逐和排空pod
kubectl drain 10.1.2.2 --delete-local-data --ignore-daemonsets --force   
  • --delete-local-data:即使pod使用了emptyDir也删除

  • --ignore-daemonsets:忽略DaemonSet创建的pod,以及其它强守护进程类型的pod,只驱逐业务pod(不知道描述的对不对,大致上是这个意思)

  • --force:不加force参数只会删除该NODE上由ReplicationController, ReplicaSet, DaemonSet,StatefulSet or Job创建的Pod,加了后还会删除’裸奔的pod’(没有绑定到任何replication controller)

# 重启Node上的docker服务

  • Node节点封锁成功、且上面的Pod也驱逐成功后,登录这台Node节点服务器上,执行如下命令
ssh root@10.1.2.2
systemctl restart dockerd.service
systemctl status dockerd.service
  • 重启完成后,磁盘中临时被占用的数据和缓存就会被释放,此时磁盘就恢复正常了

# 重新让Node节点投产

  • 为Node解封允许k8s集群可以调度该Node
kubectl uncordon 10.1.2.2