Kubelet 检查点 API

功能状态: Kubernetes v1.30 [beta]

容器检查点功能用于创建正在运行容器的状态副本。创建容器状态副本后,您可以将其移动到其他计算机进行调试或类似目的。

如果您将检查点容器数据移动到能够恢复它的计算机,恢复的容器将从检查点时完全相同的点继续运行。您还可以检查保存的数据,前提是您拥有合适的工具。

创建容器检查点可能存在安全隐患。通常,检查点包含检查点容器中所有进程的所有内存页面。这意味着曾经在内存中的所有内容现在都可以在本地磁盘上找到。这包括所有私有数据,以及可能用于加密的密钥。底层 CRI 实现(该节点上的容器运行时)应该创建检查点存档,使其只能由root用户访问。重要的是,如果将检查点存档转移到其他系统,所有内存页面都将可被检查点存档所有者读取。

操作

post 检查指定容器

指示 kubelet 从指定的 Pod 检查特定的容器。

有关如何控制对 kubelet 检查点接口的访问的更多信息,请参阅Kubelet 身份验证/授权参考

kubelet 将向底层CRI实现请求检查点。在检查点请求中,kubelet 将指定检查点存档的名称为checkpoint-<podFullName>-<containerName>-<timestamp>.tar,并请求将检查点存档存储在其根目录(由--root-dir定义)下的checkpoints目录中。默认值为/var/lib/kubelet/checkpoints

检查点存档采用tar格式,可以使用tar的实现列出。存档内容取决于底层 CRI 实现(该节点上的容器运行时)。

HTTP 请求

POST /checkpoint/{namespace}/{pod}/{container}

参数

  • namespace (在路径中): 字符串,必填

    Namespace
  • pod (在路径中): 字符串,必填

    Pod
  • container (在路径中): 字符串,必填

    容器
  • timeout (在查询中): 整数

    等待检查点创建完成的超时时间(以秒为单位)。如果指定为零或没有超时时间,将使用默认的CRI超时值。检查点创建时间直接取决于容器使用的内存。容器使用的内存越多,创建相应检查点所需的时间就越长。

响应

200: OK

401: 未授权

404: 未找到(如果ContainerCheckpoint功能网关已禁用)

404: 未找到(如果指定的namespacepodcontainer找不到)

500: 内部服务器错误(如果 CRI 实现遇到检查点过程中发生的错误(有关更多详细信息,请参阅错误消息))

500: 内部服务器错误(如果 CRI 实现未实现检查点 CRI API(有关更多详细信息,请参阅错误消息))

上次修改时间:2024 年 7 月 24 日下午 7:10 PST: 修复 v1.30 中 ContainerCheckpoint 的功能网关状态 (200a04ffe9)