Kubernetes垃圾回收机制的示例分析
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要介绍了Kubernetes垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Kubernetes垃圾回收
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
监控存储服务器配置
主机屋服务器怎么连接
网络安全sds
如何学好计算机和网络技术
创业之星为什么连接到服务器失败
360网络安全与齐安信
吉安计算机网络技术去哪学
数据库高低排序
我的世界改名服务器不显示
网络安全型企业的企业分析
服务器无法创建apple id
数据库包括哪库
陈利计算机网络技术
网络安全专业就业数据
网络安全与信息化考研方向
江西服务器回收公司地址
轩辕传奇无法连接服务器
价格数据库规则
sap调用文档服务器
广州盈冲互联网科技有限公司
木瓜互联网科技素材图片可爱
阿克苏软件开发怎么样
电子商务可以从事软件开发吗
如何挑选云服务器安全产品
中国互联网和高新科技
c 写web服务器
数据库安全性最重要的
数据库中心服务器开发的
数据库国产安全许可证
英灵神殿服务器加管理员