Kubernetes垃圾回收机制的示例分析
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍了Kubernetes垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Kubernetes垃圾回收
千家信息网最后更新 2025年12月03日Kubernetes垃圾回收机制的示例分析
这篇文章主要介绍了Kubernetes垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
Kubernetes垃圾回收机制
问题发现
测试环境上,node节点上面镜像,突然被删除,故查明下删除的原理机制
垃圾回收机制
Kubelet的GC功能将清理未使用的image和container。Kubelet每分钟对container执行一次GC,每5分钟对image执行一次GC。不建议使用外部垃圾收集工具,因为这些工具可能破坏Kubelet。
image
Kubernetes与Cadvisor配合,通过ImageManager管理所有image的生命周期。image的GC策略包含高阈值和低阈值,高于高阈值的磁盘使用率将触发GC,删除最近最少使用的图像,直到满足低阈值为止。
container
container的GC主要有3个用户定义变量:MinAge:容器被GC的最短时间MaxPerPodContainer: 允许每个PodContainer中死容器的最大数目,PodContainer指1个Container而非podMaxContainers:死容器的最大数目Minage=0,MaxPerPodContainer和MaxContainers <0, 表示禁用这些变量GC用于unidentified、deleted或超出边界的容器(3个用户定义变量)。最旧的container通常首先被移除。如果MaxPerPodContainer>MaxContainers,maxperpodcontainer会进行调整,直至降级为1,并逐出最旧的容器。pods所拥有的已删除的容器一旦超过MinAge,就会被删除。未由Kubelet管理的容器不受容器垃圾收集的约束。
配置 GC
通过修改kubelet flags来实现。image gc参数:image-gc-high-threshold image GC 高阈值百分比,缺省为85%image-gc-low-threshold image GC 低阈值百分比,缺省为80%minimum-container-ttl-duration MinAge参数,缺省为0maximum-dead-containers-per-container MaxPerPodContainer,缺省为1.maximum-dead-containers MaxContainers,缺省为-1, 也就是没有限制Container可能在其到期之前被GC,Container包含日志和其他对故障排除有用的数据。强烈建议MaxPerPodContainer和maximum-dead-containers 足够大。
GC效果
配置一个10s后会失败的container 配置文件pod-gc.yaml
apiVersion: v1kind: Podmetadata: name: gc-testspec: containers: - name: busybox-gc-1 image: busybox:v1 command: - /bin/sh - -c - 'sleep 10 && hello'
使用yaml创建pod
kubectl apply -f pod-gc.yaml
查看docker的状态,当出现2个exit的container时,就会出发GC,回收最早的一个container
# docker ps -a | grep busybox-gc8ddbfcf4ebee 59788edf1f3e "/bin/sh -c 'sleep 1…" 2 seconds ago Up 1 second k8s_busybox-gc-1_gc-test_default_3651c167-75f0-11e9-bc74-52540005f38a_57d7c1ade82af 59788edf1f3e "/bin/sh -c 'sleep 1…" About a minute ago Exited (127) About a minute ago k8s_busybox-gc-1_gc-test_default_3651c167-75f0-11e9-bc74-52540005f38a_4# docker ps -a | grep busybox-gc8ddbfcf4ebee 59788edf1f3e "/bin/sh -c 'sleep 1…" 10 seconds ago Up 9 seconds k8s_busybox-gc-1_gc-test_default_3651c167-75f0-11e9-bc74-52540005f38a_57d7c1ade82af 59788edf1f3e "/bin/sh -c 'sleep 1…" About a minute ago Exited (127) About a minute ago k8s_busybox-gc-1_gc-test_default_3651c167-75f0-11e9-bc74-52540005f38a_4# docker ps -a | grep busybox-gc8ddbfcf4ebee 59788edf1f3e "/bin/sh -c 'sleep 1…" 11 seconds ago Exited (127) Less than a second ago k8s_busybox-gc-1_gc-test_default_3651c167-75f0-11e9-bc74-52540005f38a_57d7c1ade82af 59788edf1f3e "/bin/sh -c 'sleep 1…" About a minute ago Exited (127) About a minute ago k8s_busybox-gc-1_gc-test_default_3651c167-75f0-11e9-bc74-52540005f38a_4# docker ps -a | grep busybox-gc8ddbfcf4ebee 59788edf1f3e "/bin/sh -c 'sleep 1…" 12 seconds ago Exited (127) 1 second ago k8s_busybox-gc-1_gc-test_default_3651c167-75f0-11e9-bc74-52540005f38a_5
修改配置文件/var/lib/kubelet/kubeadm-flags.env增加参数-maximum-dead-containers-per-container=2
KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --maximum-dead-containers-per-container=2
systemctl restart kubelet ##重启kubelet服务kubectl delete -f pod-gc.yaml ##删除前面的podkubectl apply -f pod-gc.yaml ##重新添加pod
可以看到,当exit的容器达到3个时,才会触发gc
# docker ps -a | grep busybox-gcc8677098e9aa af2f74c517aa "/bin/sh -c 'sleep 1…" 8 seconds ago Up 8 seconds k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_2f0bc1b7893bd af2f74c517aa "/bin/sh -c 'sleep 1…" 34 seconds ago Exited (127) 23 seconds ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_19e7fa118b1d3 af2f74c517aa "/bin/sh -c 'sleep 1…" 45 seconds ago Exited (127) 35 seconds ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_0# docker ps -a | grep busybox-gcc8677098e9aa af2f74c517aa "/bin/sh -c 'sleep 1…" 9 seconds ago Up 9 seconds k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_2f0bc1b7893bd af2f74c517aa "/bin/sh -c 'sleep 1…" 35 seconds ago Exited (127) 24 seconds ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_19e7fa118b1d3 af2f74c517aa "/bin/sh -c 'sleep 1…" 46 seconds ago Exited (127) 36 seconds ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_0# docker ps -a | grep busybox-gcc8677098e9aa af2f74c517aa "/bin/sh -c 'sleep 1…" 10 seconds ago Exited (127) Less than a second ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_2f0bc1b7893bd af2f74c517aa "/bin/sh -c 'sleep 1…" 36 seconds ago Exited (127) 25 seconds ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_19e7fa118b1d3 af2f74c517aa "/bin/sh -c 'sleep 1…" 47 seconds ago Exited (127) 36 seconds ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_0# docker ps -a | grep busybox-gcc8677098e9aa af2f74c517aa "/bin/sh -c 'sleep 1…" 11 seconds ago Exited (127) 1 second ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_2f0bc1b7893bd af2f74c517aa "/bin/sh -c 'sleep 1…" 37 seconds ago Exited (127) 26 seconds ago k8s_busybox-gc-1_gc-test_default_3425a55b-75f5-11e9-bc74-52540005f38a_1
感谢你能够认真阅读完这篇文章,希望小编分享的"Kubernetes垃圾回收机制的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
容器
垃圾
阈值
机制
篇文章
配置
参数
示例
分析
最大
工具
建议
数目
文件
百分
百分比
管理
也就是
价值
使用率
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
闵行区人工智能应用软件开发优势
cftr基因数据库
手机锁屏连接不到服务器
水稻白叶枯病转录组数据库
防范电信网络安全教育手抄报
拼服务器
nc系统工资数据导入不进数据库
联通采购通用服务器是什么
软件开发室
如何查看数据库是哪一个版本的
关于网络安全的海报图片
服务器细分龙头
用jsp对数据库操作
服务器相关技术的介绍
软件开发高层平均年薪
服务器安全组端口设置
数据库考研哪个学校在天津
网络安全日宣传日
网络安全宣传视频陕西
自己的网络安全吗
emule 最新服务器
数据库设计innodb
数据库活锁解决
sqlite数据库多连接
购买云服务器的费用叫什么费用
提高5g网络技术
查找mysql中数据库
企业云服务器申请补贴 杭州
云服务器如何防护
服务器电源dc红灯