ACK は containerd、Sandboxed-Container、Docker をサポートしています。分離モデル、使用制限、デプロイメントアーキテクチャを比較して、ワークロードに適したランタイムを選択してください。
Docker ランタイムはメンテナンスが終了しました。クラスターで Docker を実行している場合は、containerd へ移行してください。
コンテナランタイムが Kubernetes ノードに組み込まれる仕組み
コンテナランタイムは、各ノードでコンテナのライフサイクルを管理します。kubelet は、コンテナランタイムインターフェース (CRI) を介してランタイムと通信します。ランタイムの選択により、分離モデル、サポートされるノードタイプ、利用可能な CLI ツールが決まります。
ACK は以下のランタイムをサポートしています。
-
containerd — ほとんどのワークロードに推奨します。軽量で、CRI に直接準拠しており、中間デーモンが不要です。
-
Sandboxed-Container — 軽量 VM (runV) を使用して、各 Pod を分離されたカーネルで実行します。
-
Docker (メンテナンス終了) — containerd へ移行してください。
機能と制限
|
機能 |
containerd |
Sandboxed-Container |
Docker (メンテナンス終了) |
|
クラスタータイプ |
|
|
すべてのタイプの ACK クラスター |
|
Kubernetes バージョン |
1.20 以降 |
1.16 以降 |
1.22 以前 |
|
ノードタイプ |
|
ECS |
|
|
ノードオペレーティングシステム |
Container Service for Kubernetes は、Alibaba Cloud Linux 3 コンテナ最適化版、ContainerOS、Alibaba Cloud Linux 3、Ubuntu、Windows などのオペレーティングシステムのパブリックイメージを提供しています。詳細については、「オペレーティングシステム」をご参照ください。 |
|
|
|
コンテナエンジン |
containerd |
containerd |
Docker |
|
モニタリング |
サポート対象 |
サポート対象 |
サポート対象 |
|
コンテナログ収集 |
サポート対象 |
手動でのサイドカーインジェクションが必要です。「CRD を使用してサイドカーモードでコンテナテキストログを収集する」をご参照ください。 |
サポート対象 |
|
コンテナ標準出力収集 |
サポート対象 |
サポート対象 |
サポート対象 |
|
RuntimeClass |
サポート対象外 |
サポート対象 (runV) |
サポート対象外 |
|
Pod スケジューリング |
設定は不要です。 |
以下の設定を追加します。
|
設定は不要です。 |
|
HostNetwork |
サポート対象 |
サポート対象外 |
サポート対象 |
|
ノードデータディスク |
オプション |
必須。最低 200 GiB。 |
オプション |
|
ネットワークプラグイン |
|
|
|
|
kube-proxy モード |
|
|
|
|
ボリュームプラグイン |
CSI プラグイン (ACK Edge クラスター を除く) |
CSI プラグイン |
CSI プラグイン |
|
コンテナルートファイルシステム |
OverlayFS |
OverlayFS (ディスククォータあり) |
OverlayFS |
Docker と Sandboxed-Container は同じノードで共存できません。クラスター内で両方を使用する場合は、ランタイムごとに個別のノードプールを作成してください。
Sandboxed-Container は containerd 上で実行されます。kubectl get node または ACK コンソールでノードを確認すると、ランタイムは containerd と表示されます。
デプロイメントアーキテクチャ
kubelet からコンテナへのコールチェーンは、ランタイムによって異なります。レイヤーが少ないほど、オーバーヘッドと複雑さが低減されます。
|
ランタイム |
デプロイメントアーキテクチャ |
|
Docker |
|
|
containerd |
|
|
Sandboxed-Container v2 |
|
containerd は dockerd レイヤーを削除し、kubelet に直接 CRI アクセスを提供します。Sandboxed-Container v2 は、containerd-shim-runv2 によって containerd を拡張し、runV を介して Pod を軽量 VM で実行することで、標準の runC コンテナと並行してカーネルレベルの分離を実現します。
containerd と Docker の CLI コマンド
containerd と Docker は異なる CLI ツールを使用します。crictl は CRI レベルで動作するため、containerd での使用を推奨します。ctr は containerd の低レベルの代替手段です。
|
操作 |
crictl (containerd で推奨) |
ctr (containerd 低レベル CLI) |
docker |
|
コンテナの一覧表示 |
|
|
|
|
コンテナの検査 |
|
|
|
|
コンテナログの表示 |
|
N/A |
|
|
コンテナ内でのコマンド実行 |
|
N/A |
|
|
コンテナへのアタッチ |
|
N/A |
|
|
リソース使用状況の表示 |
|
N/A |
|
|
コンテナの作成 |
|
|
|
|
コンテナの起動 |
|
|
|
|
コンテナの停止 |
|
|
|
|
コンテナの削除 |
|
|
|
|
イメージの一覧表示 |
|
|
|
|
イメージの検査 |
|
N/A |
|
|
イメージのプル |
|
|
|
|
イメージのプッシュ |
N/A |
|
|
|
イメージの削除 |
|
|
|
|
Pod の一覧表示 |
|
N/A |
N/A |
|
Pod の検査 |
|
N/A |
N/A |
|
Pod の起動 |
|
N/A |
N/A |
|
Pod の停止 |
|
N/A |
N/A |