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 (在路径中):字符串,必需

    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)