• 作者:老汪软件技巧
  • 发表时间:2023-12-27 22:00
  • 浏览量:

(CRI)

(CRI)是一个插件接口,它使能够使用各种容器运行时,无需重新编译集群组件。

您需要在集群中的每个节点上安装一个可用的容器运行时,以便能够启动Pod和它们的容器。

容器运行时接口(CRI)是和容器运行时之间通信的主要协议。

容器运行时接口(CRI)定义了集群组件和容器运行时之间通信的主要gRPC协议。

The API

在中,通过gRPC与容器运行时进行连接时充当客户端。

运行时和镜像服务的终端点必须在容器运行时中可用,可以通过在中使用–image--命令行标志来单独配置。

对于 v1.28,优先使用CRI v1。如果容器运行时不支持CRI的v1版本,则尝试协商任何较旧的支持版本。v1.28的还可以协商CRI 版本,但是此版本已被视为不推荐使用。如果无法协商支持的CRI版本,将放弃并不会注册为节点。

垃圾回收( )

垃圾收集是用于清理集群资源的各种机制的集合术语。这允许清理以下资源:

已终止的Pod

已完成的作业

没有所有者引用的对象

未使用的容器和容器镜像

具有回收策略的动态提供的的

过时或过期的(CSRs)

在以下场景中删除的节点:

在使用云控制器管理器的情况下,在云中

在使用类似云控制器管理器的附加组件的本地环境中

节点租约对象

and

在中,许多对象通过所有者引用相互链接。

所有者引用告诉控制平面哪些对象依赖于其他对象。

使用所有者引用来为控制平面和其他API客户端提供在删除一个对象之前清理相关资源的机会。在大多数情况下,会自动管理所有者引用。

所有权与某些资源还使用的标签和选择器机制不同。例如,考虑一个创建对象的。使用标签来允许控制平面确定哪些对象用于该。除了标签之外,代表管理的每个都有一个所有者引用。所有者引用有助于的不同部分避免干扰它们不控制的对象。

注意:

根据设计,不允许跨命名空间的所有者引用。命名空间内的依赖对象可以指定集群范围或命名空间范围的所有者。命名空间内的所有者必须存在于与依赖对象相同的命名空间中。如果不存在,则将所有者引用视为不存在,并且一旦验证所有者都不存在,依赖对象就会被删除。

集群范围的依赖对象只能指定集群范围的所有者。从v1.20开始,如果集群范围的依赖对象指定了一个命名空间内的资源作为所有者,那么它将被视为具有无法解析的所有者引用,无法进行垃圾收集。

从v1.20开始,如果垃圾收集器检测到无效的跨命名空间所有者引用,或者具有引用命名空间内资源的所有者引用的集群范围的依赖对象,将报告一个带有pace的警告事件,涉及的对象是无效的依赖对象。您可以通过运行 get -A --field-==pace来检查这种类型的事件。

通过检查并删除不再具有所有者引用的对象来清理资源,例如在删除时留下的Pod。当您删除一个对象时,您可以控制是否自动删除对象的依赖对象,这个过程称为级联删除。级联删除有两种类型,如下所示:

您还可以使用的控制垃圾收集如何以及何时删除具有所有者引用的资源。

前台级联删除

在前台级联删除中,您首先正在删除的所有者对象进入一个“正在删除中”的状态。在这个状态下,以下事情发生在所有者对象上:

在所有者对象进入删除中状态后,控制器删除依赖对象。在删除所有依赖对象后,控制器删除所有者对象。在此时,对象在 API中不再可见。

在前台级联删除期间,阻止所有者删除的唯一依赖对象是具有.=true字段的依赖对象。有关更多信息,请参阅使用前台级联删除。

后台级联删除

在后台级联删除中, API服务器立即删除所有者对象,而控制器在后台清理依赖对象。默认情况下,使用后台级联删除,除非您手动选择使用前台删除或选择孤立依赖对象。