Kubelet 检查点 API
容器检查点功能是指为正在运行的容器创建一个有状态副本。一旦你拥有了容器的有状态副本,就可以将其移动到另一台计算机上进行调试或类似目的。
如果你将检查点数据移动到能够恢复它的计算机上,那么恢复的容器将从检查点创建的确切位置继续运行。你也可以检查保存的数据,前提是你拥有合适的工具。
创建容器检查点可能涉及安全隐患。通常,检查点包含被检查点容器中所有进程的所有内存页。这意味着内存中的所有内容现在都可以在本地磁盘上访问,包括所有私有数据和可能的加密密钥。底层的 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,必填
Namespacepod (路径中): string, 必需
Podcontainer (路径中): string, 必需
容器timeout (查询中): integer
等待检查点创建完成的秒数。如果为零或未指定超时,将使用默认的 CRI 超时值。检查点创建时间直接取决于容器使用的内存。容器使用的内存越多,创建相应检查点所需的时间就越长。
响应
200: OK
401: 未授权
404: Not Found (如果 ContainerCheckpoint
功能门控已禁用)
404: Not Found (如果指定的 namespace
、pod
或 container
找不到)
500: Internal Server Error (如果 CRI 实现检查点过程中遇到错误(有关详细信息,请参阅错误消息))
500: Internal Server Error (如果 CRI 实现未实现检查点 CRI API(有关详细信息,请参阅错误消息))