KubeletチェックポイントAPI
Kubernetes v1.25 [alpha]
コンテナのチェックポイントは実行中のコンテナのステートフルコピーを作成するための機能です。 コンテナのステートフルコピーがあると、デバックや類似の目的のために別のコンピューターに移動させることができます。
チェックポイントコンテナデータを復元可能なコンピューターに移動させる場合、その復元したコンテナは、チェックポイントが作成された正確に同じ地点で実行が再開されます。 保存したデータを検査することも可能です。 ただし、検査を行うための適したツールを保持している必要があります。
コンテナのチェックポイントを作成することで、セキュリティ影響が発生する場合があります。
通常、チェックポイントはチェックポイントされたコンテナ内のすべてのプロセスのすべてのメモリーページを含んでいます。
メモリー内で使用された全てがローカルディスク上で利用できるようになることを意味しています。
これはすべてのプライベートデータを含んでおり、もしかしたら暗号化に使用した鍵も含まれているかもしれません。
基礎となるCRI実装(そのノード上のコンテナランタイム)は、root
ユーザーのみがアクセス可能なチェックポイントアーカイブを作成するべきです。
チェックポイントアーカイブが他のシステムに転送された場合、全てのメモリーページがチェックポイントアーカイブのオーナーによって読み取れるようになることを覚えておくことが重要です。
操作方法
post
指定したコンテナのチェックポイント
指定したPodから指定したコンテナのチェックポイントを作成するようにkubeletに指示します。
kubeletチェックポイントインターフェースへのアクセスの制御方法についての詳細な情報は、Kubelet authentication/authorization referenceを参照してください。
kubeletは基礎となるCRI実装にチェックポイントをリクエストします。
チェックポイントリクエストでは、kubeletがcheckpoint-<podFullName>-<containerName>-<timestamp>.tar
のようなチェックポイントアーカイブの名前を指定します。
併せて、(--root-dir
で定義される)rootディレクトリ配下の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: Unauthorized
404: Not Found (ContainerCheckpoint
フィーチャーゲートが無効の場合)
404: Not Found (指定したnamespace
やpod
、container
が見つからない場合)
500: Internal Server Error (CRI実装でチェックポイント中にエラーが発生した場合(詳細はエラーメッセージを参照))
500: Internal Server Error (CRI実装がチェックポイントCRI APIを実装していない場合(詳細はエラーメッセージを参照))