このトピックでは、runCとSandboxed-Container (runV) のパフォーマンスとポッドの作成方法の違いについて説明します。 これにより、サンドボックスコンテナをよりよく理解して活用できます。
runCとrunVの比較
コンポーネント | runC | runV |
コンテナーエンジン | Dockerとcontainerd | Containerd |
ノード タイプ | Elastic Compute Service (ECS) インスタンスおよびECSベアメタルインスタンス | EBM |
コンテナカーネル | ホストカーネルの共有 | 専用カーネルを使用 |
コンテナの分離 | コントロールグループ (cgroups) と名前空間 | 軽量VM |
Rootfsグラフドライバー | OverlayFS | OverlayFS |
RootFS I/Oスロットル | Cgroups | 非対応 |
NASマウント | 非対応 | 対応 |
ディスクの取り付け | 非対応 | 非対応 |
コンテナログ収集Container log collection | Logtailは、ノードからコンテナログを直接収集します。 | Logtailサイドカー。 詳細については、「SidecarモードでCRDを使用したコンテナテキストログの収集」をご参照ください。 |
ポッドのオーバーヘッド | 非該当 | ポッドオーバーヘッドのメモリは、次の式に基づいて計算されます。ポッドオーバーヘッドのメモリ=64 MiB + ポッドメモリ要求 × 2% 。 結果が512 MiBより大きい場合、値は512 MiBに設定される。 結果が64 MiB未満の場合、値は64 MiBに設定されます。 |
runCとrunVのポッド作成の違い
kubectlコマンドラインツールを使用して、Container Service for Kubernetes (ACK) クラスターに接続できます。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
runCを使用するポッドを作成する
オプション:
runtimeClassName: runc
を使用して、コンテナランタイムをrunCに設定します。説明上記の設定はオプションです。 runCはデフォルトのコンテナランタイムです。
次のコマンドを実行して、runCを使用するポッドを作成します。
cat <<EOF | kubectl create -f - apiVersion: v1 kind: Pod metadata: name: busybox-runc labels: app: busybox-runc spec: containers: - name: busybox image: registry.cn-hangzhou.aliyuncs.com/acs/busybox:v1.29.2 command: - tail - -f - /dev/null resources: limits: cpu: 1000m memory: 512Mi requests: cpu: 1000m memory: 512Mi EOF
runVを使用するポッドを作成する
runtimeClassName: runv
を使用して、コンテナランタイムをrunVに設定します。オプション: 次のコマンドを実行して、
runv
という名前のRuntimeClassオブジェクトがクラスターに存在することを確認します。kubectl get runtimeclass runv -o yaml
説明runv
という名前のRuntimeClassオブジェクトは、Sandboxed-Containerを使用するKubernetesクラスターに自動的に作成されます。次のコマンドを実行して、runVを使用するポッドを作成します。
cat <<EOF | kubectl create -f - apiVersion: v1 kind: Pod metadata: name: busybox-runv labels: app: busybox-runv spec: runtimeClassName: runv nodeSelector: alibabacloud.com/container-runtime: Sandboxed-Container.runv containers: - name: busybox image: registry.cn-hangzhou.aliyuncs.com/acs/busybox:v1.29.2 command: - tail - -f - /dev/null resources: limits: cpu: 1000m memory: 512Mi requests: cpu: 1000m memory: 512Mi EOF
重要Kubernetesのバージョンが1.16より前の場合は、次のnodeSelector設定を追加する必要があります。 Kubernetesバージョンが1.16以降の場合、次のnodeSelector設定は必要ありません。
nodeSelector: alibabacloud.com/container-runtime: Sandboxed-Container.runv
次のコマンドを実行して、作成されたポッドを照会します。
runv
が出力に含まれている場合、ポッドがサンドボックスで実行されていることを示します。kubectl get pod busybox-runv -o jsonpath={.spec.ru ntimeClassName}
次のコマンドを実行してポッドにログインし、そのCPUおよびメモリ構成を照会します。
kubectl exec -ti pod busybox-runv /bin/sh / # cat /proc/meminfo | head -n1 MemTotal: 1130692 kB / # cat /proc/cpuinfo | grep processor processor : 0
上記の出力は、CPUの数がホストの数と同じではないことを示しています。 総メモリは、ポッドメモリとポッドオーバーヘッドの合計です。 システムがいくらかのメモリも消費するため、総メモリはわずかに小さいことに注意してください。