当我们重启kubernetes master 或者docker 意外退出的时候 会产生许多 Exited 的docker 容器,我们如何定时清理 这些退出的容器呢?
1: docker 1.7 版本之后 可以使用docker container prune 可以手动清理退出容器,释放磁盘空间减少内存开销
2: 容器回收分为两种情况
2.1: kubernetes 管理的容器,由pod 创建和管理
Kubernetes的垃圾回收由kubelet进行管理,每分钟会查询清理一次容器,每五分钟查询清理一次镜像。在kubelet刚启动时并不会立即进行GC,即第一次进行容器回收为kubelet启动一分钟后,第一次进行镜像回收为kubelet启动五分钟后。
2.2 : 非kubernetes 管理 我们手动创建的容器以及 docker 意外退出的产生的Exited 容器 不在kubernetes 容器gc的范围之内,我们需要针对这一特殊情况进行管理
策略
暂停的时候:
stop
1: kubectl scale --replicas=0 deploy/smartpostion
2: 确认暂停完毕之后 systemctl stop kube-* 组件
3: docker ps -a | grep "Exited" | grep -v k8s | awk '{print $1}' | xargs -n 1 docker rm
4: systemctl stop docker flanneld etcd