千家信息网

Kubernetes垃圾回收机制的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Kubernetes垃圾回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Kubernetes垃圾回收
千家信息网最后更新 2026年11月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安全错误 数据库的锁怎样保障安全 互联网科技名片 喔噻互联网科技有限公司 互联网佳科技有限公司 西安纸贵互联网科技有限公司 互联网的科技 科技创新与互联网经济 互联网科技作文 九亚互联网科技 菲比寻常互联网科技 兼蜜互联网科技 大白互联网科技 重庆科技学院互联网 互联网科技大奖都有哪些公司 朱啸虎曾投资哪些互联网科技企业 华中科技大学互联网的牛人 上海创道互联网络科技有限公司 福建互联网展示科技馆设计 优雇互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 北京瑞云互联网科技有限公司 美国互联网科技巨头监管 科技赋能互联网健康 广州慧亚互联网科技怎么样 互联网科技革命什么开始 科技类公司包括互联网吗 滨湖区互联网智能科技产品有哪些 广州富喜互联网络科技 富国互联网科技002692 江苏互联网科技小贷 知域互联网科技有限公司官网
0