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,必填

    Namespace
  • pod (路径中): string, 必需

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

    容器
  • timeout (查询中): integer

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

响应

200: OK

401: 未授权

404: Not Found (如果 ContainerCheckpoint 功能门控已禁用)

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

500: Internal Server Error (如果 CRI 实现检查点过程中遇到错误(有关详细信息,请参阅错误消息))

500: Internal Server Error (如果 CRI 实现未实现检查点 CRI API(有关详细信息,请参阅错误消息))

最后修改于 2024 年 7 月 24 日,太平洋标准时间下午 7:10:Fix feature gate status for ContainerCheckpoint in v1.30 (200a04ffe9)