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(有關詳細資訊,請參閱錯誤訊息))