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)