长时间运行的集群,常会面临各种资源耗尽的问题,另外磁盘不足时 Kubelet 还会主动清理镜像增加不确定因素,本文提供了一些命令片段用于清理工作。
1. Kubernetes 基础对象清理 清理 Evicted 状态的 Pod kubectlgetpods–all-namespaces-owide|grepEvicted|awk\\\'{print$1,$2}\\\’|xargs-L1kubectldeletepod-n 清理 Error 状态的 Pod kubectlgetpods–all-namespaces-owide|grepError|awk\\\'{print$1,$2}\\\’|xargs-L1kubectldeletepod-n 清理 Completed 状态的 Pod kubectlgetpods–all-namespaces-owide|grepCompleted|awk\\\'{print$1,$2}\\\’|xargs-L1kubectldeletepod-n 清理没有被使用的 PV kubectldescribe-Apvc|grep-E^Name:.*$|^Namespace:.*$|^UsedBy:.*$|grep-B2|grep-E^Name:.*$|^Namespace:.*$|cut-f2-d:|paste-d–|xargs-n2bash-c\\\’kubectl-n${1}deletepvc${0}\\\’ 清理没有被绑定的 PVC kubectlgetpvc–all-namespaces|tail-n 2|grep-vBound|awk\\\'{print$1,$2}\\\’|xargs-L1kubectldeletepvc-n 清理没有被绑定的 PV kubectlgetpv|tail-n 2|grep-vBound|awk\\\'{print$1}\\\’|xargs-L1kubectldeletepv 2. Linux 清理 查看磁盘全部空间 FilesystemSizeUsedAvailUse%Mountedon/dev/sda2100G47G54G47%/ 查看指定目录占用 du-sh.24G. 删除指定前缀的文件夹 cd/nfsdatals|greparchived-|xargs-L1rm-r 清理僵尸进程 ps-A-ostat,ppid|grep-e\\\’^[Zz]\\\’|awk\\\'{print}\\\’|xargskill-HUP>/dev/null2>&1 3. docker 清理 查看磁盘使用情况 dockersystemdfTYPETOTALACTIVESIZERECLAIMABLEImages36123178.5GB173.8GB(97%)Containers2996.682GB6.212GB(92%)LocalVolumes403.139MB3.139MB(100%)BuildCache000B0B 清理 none 镜像 dockerimages|grepnone|awk\\\'{print$3}\\\’|xargsdockerrmi 清理不再使用的数据卷 dockervolumerm$(dockervolumels-q)
或者
dockervolumeprune 清理缓存 dockerbuilderprune 全面清理
删除关闭的容器、无用的存储卷、无用的网络、dangling 镜像(无 tag 镜像)
dockersystemprune-f 清理正则匹配上的镜像
这里清理的是 master-8bcf8d7-20211206-111155163 格式的镜像。
dockerimages|grep-E([0-9a-z]*[-]){3,}[0-9]{9}|awk\\\'{print$3}\\\’|xargsdockerrmi 4. 设置定时 查看定时任务 crontab-l 设置定时任务 crontab-e
文本新增定时任务
*/35*/6***dockerimages|grepnone|awk\\\'{print$3}\\\’|xargsdockerrmi451***dockersystemprune-f
这里第一个任务是每隔六个小时的第 35 分钟执行,第二个任务每天的 1 时 45 分执行。
定时任务的格式
设置定时格式: * * * * * shell
第一个星号,minute,分钟,值为 0-59 第二个星号,hour,小时,值从 0-23 第三个星号,day,天,值为从 1-31 第四个星号,month,月,值为从 1-12 月,或者简写的英文,比如 Nov、Feb 等 第五个星号,week 周,值为从 0-6 或者简写的英文,Wen、Tur 等,代表周几,其中 0 代表周末.