惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
B
Blog RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
S
SegmentFault 最新的问题
The Cloudflare Blog
I
InfoQ
美团技术团队
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
L
LangChain Blog
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
常用的清理 Kubernetes 集群资源命令
微信公众号 · 2021-12-08 · via 陈少文的网站

Please enable Javascript to view the contents

长时间运行的集群,常会面临各种资源耗尽的问题,另外磁盘不足时 Kubelet 还会主动清理镜像增加不确定因素,本文提供了一些命令片段用于清理工作。

1. Kubernetes 基础对象清理

  • 清理 Evicted 状态的 Pod
1
sudo kubectl get pods --all-namespaces -o wide | grep Evicted | awk '{print $1,$2}' | sudo xargs -L1 kubectl delete pod -n
  • 清理 Error 状态的 Pod
1
sudo kubectl get pods --all-namespaces -o wide | grep Error | awk '{print $1,$2}' | sudo xargs -L1 kubectl delete pod -n
  • 清理 Completed 状态的 Pod
1
sudo kubectl get pods --all-namespaces -o wide | grep Completed | awk '{print $1,$2}' | sudo xargs -L1 kubectl delete pod -n
  • 清理没有被使用的 PV
1
sudo kubectl describe -A pvc | grep -E "^Name:.*$|^Namespace:.*$|^Used By:.*$" | grep -B 2 "<none>" | grep -E "^Name:.*$|^Namespace:.*$" | cut -f2 -d: | paste -d " " - - | sudo xargs -n2 bash -c 'kubectl -n ${1} delete pvc ${0}'
  • 清理没有被绑定的 PVC
1
sudo kubectl get pvc --all-namespaces | tail -n +2 | grep -v Bound | awk '{print $1,$2}' | sudo xargs -L1 kubectl delete pvc -n
  • 清理没有被绑定的 PV
1
sudo kubectl get pv | tail -n +2 | grep -v Bound | awk '{print $1}' | sudo xargs -L1 kubectl delete pv

2. Linux 清理

  • 查看磁盘全部空间
1
2
3
4
sudo df -hl /

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       100G   47G   54G  47% /
  • 查看指定目录占用
1
2
3
sudo du -sh .

24G	.
  • 删除指定前缀的文件夹
1
2
cd /nfsdata
ls | grep archived- |xargs -L1 rm -r
  • 清理僵尸进程
1
sudo ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print }' | xargs kill -HUP > /dev/null 2>&1

3. Docker 清理

  • 查看磁盘使用情况
1
2
3
4
5
6
7
sudo docker system df

TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              361                 23                  178.5GB             173.8GB (97%)
Containers          29                  9                   6.682GB             6.212GB (92%)
Local Volumes       4                   0                   3.139MB             3.139MB (100%)
Build Cache         0                   0                   0B                  0B
  • 清理 none 镜像
1
sudo docker images | grep none | awk '{print $3}' | sudo xargs docker rmi
  • 清理不再使用的数据卷
1
sudo docker volume rm $(docker volume ls -q)

或者

1
sudo docker volume prune
  • 清理缓存
1
sudo docker builder prune
  • 全面清理

删除关闭的容器、无用的存储卷、无用的网络、dangling 镜像(无 tag 镜像)

  • 清理正则匹配上的镜像

这里清理的是 master-8bcf8d7-20211206-111155163 格式的镜像。

1
sudo docker images |grep -E "([0-9a-z]*[-]){3,}[0-9]{9}" |awk '{print $3}' | sudo xargs docker rmi

4. 设置定时

  • 查看定时任务
  • 设置定时任务

文本新增定时任务

1
2
*/35 */6 * * *  sudo /usr/bin/docker images | grep none | awk '{print $3}' | xargs /usr/bin/docker rmi
45 1 * * * sudo /usr/bin/docker system prune -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 代表周末


微信公众号