树叶云kubernetes教程:Kubernetes 垃圾收集

垃圾收集

垃圾收集是 Kubernetes 用于清理集群资源的各种机制的统称。 垃圾收集允许系统清理如下资源:

  • 失败的 Pod
  • 已完成的 Job
  • 不再存在属主引用的对象
  • 未使用的容器和容器镜像
  • 动态制备的、StorageClass 回收策略为 Delete 的 PV 卷
  • 阻滞或者过期的 CertificateSigningRequest (CSRs)
  • 在以下情形中删除了的节点对象:
    • 当集群使用云控制器管理器运行于云端时;
    • 当集群使用类似于云控制器管理器的插件运行在本地环境中时。
  • 节点租约对象

属主与依赖 

Kubernetes 中很多对象通过属主引用 链接到彼此。属主引用(Owner Reference)可以告诉控制面哪些对象依赖于其他对象。 Kubernetes 使用属主引用来为控制面以及其他 API 客户端在删除某对象时提供一个 清理关联资源的机会。在大多数场合,Kubernetes 都是自动管理属主引用的。

属主关系与某些资源所使用的的标签和选择算符 不同。例如,考虑一个创建 ​EndpointSlice ​对象的 Service 对象。Service 对象使用标签来允许控制面确定哪些 ​EndpointSlice ​对象被该 Service 使用。除了标签,每个被 Service 托管的 ​EndpointSlice ​对象还有一个属主引用属性。 属主引用可以帮助 Kubernetes 中的不同组件避免干预并非由它们控制的对象。

根据设计,系统不允许出现跨名字空间的属主引用。名字空间作用域的依赖对象可以指定集群作用域或者名字空间作用域的属主。 名字空间作用域的属主必须存在于依赖对象所在的同一名字空间。 如果属主位于不同名字空间,则属主引用被视为不存在,而当检查发现所有属主都已不存在时, 依赖对象会被删除。

集群作用域的依赖对象只能指定集群作用域的属主。 在 1.20 及更高版本中,如果一个集群作用域的依赖对象指定了某个名字空间作用域的类别作为其属主, 则该对象被视为拥有一个无法解析的属主引用,因而无法被垃圾收集处理。

在 1.20 及更高版本中,如果垃圾收集器检测到非法的跨名字空间 ​
ownerReference​, 或者某集群作用域的依赖对象的 ​
ownerReference ​引用某名字空间作用域的类别, 系统会生成一个警告事件,其原因为 ​
OwnerRefInvalidNamespace​,​
involvedObject ​设置为非法的依赖对象。你可以通过运行 ​
kubectl get events -A --field-selector=reason=OwnerRefInvalidNamespace​ 来检查是否存在这类事件。

级联删除 

Kubernetes 会检查并删除那些不再拥有属主引用的对象,例如在你删除了 ReplicaSet 之后留下来的 Pod。当你删除某个对象时,你可以控制 Kubernetes 是否要通过一个称作 级联删除(Cascading Deletion)的过程自动删除该对象的依赖对象。 级联删除有两种类型,分别如下:

  • 前台级联删除
  • 后台级联删除

你也可以使用 Kubernetes Finalizers 来控制垃圾收集机制如何以及何时删除包含属主引用的资源。

前台级联删除

在前台级联删除中,正在被你删除的对象首先进入 deletion in progress 状态。 在这种状态下,针对属主对象会发生以下事情:

  • Kubernetes API 服务器将对象的 ​metadata.deletionTimestamp​ 字段设置为对象被标记为要删除的时间点。
  • Kubernetes API 服务器也会将 ​metadata.finalizers​ 字段设置为 ​foregroundDeletion​。
  • 在删除过程完成之前,通过 Kubernetes API 仍然可以看到该对象。

当属主对象进入删除过程中状态后,控制器删除其依赖对象。控制器在删除完所有依赖对象之后, 删除属主对象。这时,通过 Kubernetes API 就无法再看到该对象。

在前台级联删除过程中,唯一的可能阻止属主对象被删除的依赖对象是那些带有 ​ownerReference.blockOwnerDeletion=true​ 字段的对象。

后台级联删除

在后台级联删除过程中,Kubernetes 服务器立即删除属主对象,控制器在后台清理所有依赖对象。 默认情况下,Kubernetes 使用后台级联删除方案,除非你手动设置了要使用前台删除, 或者选择遗弃依赖对象。

被遗弃的依赖对象 

当 Kubernetes 删除某个属主对象时,被留下来的依赖对象被称作被遗弃的(Orphaned)对象。 默认情况下,Kubernetes 会删除依赖对象。

未使用容器和镜像的垃圾收集 

kubelet 会每五分钟对未使用的镜像执行一次垃圾收集, 每分钟对未使用的容器执行一次垃圾收集。 你应该避免使用外部的垃圾收集工具,因为外部工具可能会破坏 kubelet 的行为,移除应该保留的容器。

要配置对未使用容器和镜像的垃圾收集选项,可以使用一个 配置文件,基于 KubeletConfiguration 资源类型来调整与垃圾搜集相关的 kubelet 行为。

容器镜像生命期 

Kubernetes 通过其镜像管理器(Image Manager)来管理所有镜像的生命周期, 该管理器是 kubelet 的一部分,工作时与 cadvisor 协同。 kubelet 在作出垃圾收集决定时会考虑如下磁盘用量约束:

  • HighThresholdPercent
  • LowThresholdPercent

磁盘用量超出所配置的 ​HighThresholdPercent ​值时会触发垃圾收集, 垃圾收集器会基于镜像上次被使用的时间来按顺序删除它们,首先删除的是最老的镜像。 kubelet 会持续删除镜像,直到磁盘用量到达 ​LowThresholdPercent ​值为止。

容器垃圾收集 

kubelet 会基于如下变量对所有未使用的容器执行垃圾收集操作,这些变量都是你可以定义的:

  • MinAge​:kubelet 可以垃圾回收某个容器时该容器的最小年龄。设置为 ​0​ 表示禁止使用此规则。
  • MaxPerPodContainer​:每个 Pod 可以包含的已死亡的容器个数上限。设置为小于 ​0​ 的值表示禁止使用此规则。
  • MaxContainers​:集群中可以存在的已死亡的容器个数上限。设置为小于 ​0​ 的值意味着禁止应用此规则。

除以上变量之外,kubelet 还会垃圾收集除无标识的以及已删除的容器,通常从最老的容器开始。

当保持每个 Pod 的最大数量的容器(​MaxPerPodContainer​)会使得全局的已死亡容器个数超出上限 (​MaxContainers​)时,​MaxPerPodContainer ​和 ​MaxContainers ​之间可能会出现冲突。 在这种情况下,kubelet 会调整 ​MaxPerPodContainer ​来解决这一冲突。 最坏的情形是将 ​MaxPerPodContainer ​降格为 ​1​,并驱逐最老的容器。 此外,当隶属于某已被删除的 Pod 的容器的年龄超过 ​MinAge ​时,它们也会被删除。

kubelet 仅会回收由它所管理的容器。

配置垃圾收集 

你可以通过配置特定于管理资源的控制器来调整资源的垃圾收集行为。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/205152.html<

(0)
运维的头像运维
上一篇2025-04-07 11:51
下一篇 2025-04-07 11:52

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注