Kubelet 检查点 API

特性状态: Kubernetes v1.30 [beta] (默认启用: true)

容器检查点是创建运行中容器有状态副本的功能。获得容器的有状态副本后,你可以将其移动到不同的计算机进行调试或类似用途。

如果你将检查点数据移动到能够恢复它的计算机上,恢复后的容器将继续在创建检查点时的确切点运行。你还可以检查保存的数据,前提是你具备合适的工具来执行此操作。

为容器创建检查点可能会带来安全隐患。通常,检查点包含检查点容器中所有进程的所有内存页。这意味着之前在内存中的所有内容现在都可在本地磁盘上获取。这包括所有私人数据以及可能用于加密的密钥。底层 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 (路径参数): string, 必需

    命名空间
  • pod (路径参数): string, 必需

    Pod
  • container (路径参数): string, 必需

    容器
  • timeout (查询参数): integer

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

响应

200: OK

401: 未授权

404: 未找到 (如果 ContainerCheckpoint 特性门控被禁用)

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

500: 内部服务器错误 (如果 CRI 实现创建检查点时发生错误 (详情请参阅错误消息))

500: 内部服务器错误 (如果 CRI 实现未实现检查点 CRI API (详情请参阅错误消息))

最后修改时间:太平洋标准时间 2024 年 7 月 24 日下午 7:10:修复 v1.30 中 ContainerCheckpoint 特性门控的状态 (200a04ffe9)