Kubernetes垃圾回收机制的示例分析
发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,这篇文章主要介绍了Kubernetes垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Kubernetes垃圾回收
千家信息网最后更新 2024年10月19日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安全错误
数据库的锁怎样保障安全
it工作的软件开发
数据库导航按钮设置
uk数据库错误
软件开发合同 简单版
阿里巴巴服务器注册流程
祖祖秋微信开发软件开发
网络技术公司税负率
山西网络技术开发售价
远程服务器安全狗
戴尔服务器改为bios启动
信息网络技术考试试题
鼎园软件开发有限公司
服务器停电后连不上服务器
自学编程app软件开发
轩亚管理系统服务器未开启怎么办
中正网络技术有限公司
浦北县软件开发
网络安全的指引
京东云服务器下载软件
扬州翊成网络技术
网络安全信息应急时间
腾讯网络安全负责人吴翰清
微信服务器会保存记录吗
网页制作和软件开发哪个好
重庆维普数据库在哪里
服务器mod怎么开
共护网络安全拒做指尖侠简报
橘子服务器管理软件
中正网络技术有限公司
傲腾内存服务器怎么样