すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:runC とサンドボックスコンテナー runV の違い

最終更新日:Mar 26, 2025

このトピックでは、パフォーマンスとポッド作成方法の観点から、runC とサンドボックスコンテナー (runV) の違いについて説明します。サンドボックスコンテナーについてより深く理解し、活用するために役立ちます。

runC と runV の比較

コンポーネント

runC

runV

コンテナーエンジン

Docker および containerd

containerd

ノードタイプ

Elastic Compute Service (ECS) インスタンスおよび ECS ベアメタルインスタンス

EBM

コンテナーカーネル

ホストカーネルを共有

専用カーネルを使用

コンテナーの隔離

Control groups (cgroups) および名前空間

軽量 VM

Rootfs Graph Driver

OverlayFS

OverlayFS

RootFS I/O 速度制限

Cgroups

サポートされていません

NAS マウント

サポートされていません

サポートされています

ディスクマウント

サポートされていません

サポートされていません

コンテナーログ収集

Logtail はノードからコンテナーログを直接収集します。

Logtail サイドカー

Pod オーバーヘッド

該当なし

ポッドオーバーヘッドのメモリは、次の式に基づいて計算されます。ポッドオーバーヘッドのメモリ = 64 MiB + ポッドメモリリクエスト × 2%。結果が 512 MiB を超える場合は、値は 512 MiB に設定されます。結果が 64 MiB 未満の場合は、値は 64 MiB に設定されます。

runC と runV のポッド作成の違い

前提条件

kubectl を使用してクラスターに接続していること

runC を使用するポッドを作成する

  1. オプション: runtimeClassName: runc を使用して、コンテナーランタイムを runC に設定します。

    説明

    上記の構成はオプションです。 runC はデフォルトのコンテナーランタイムです。

  2. 次のコマンドを実行して、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 を使用するポッドを作成する runV

  1. runtimeClassName: runv を使用して、コンテナーランタイムを runV に設定します。

  2. オプション: 次のコマンドを実行して、 runv という名前の RuntimeClass オブジェクトがクラスターに存在することを確認します。

    kubectl get runtimeclass runv -o yaml
    説明

    runv という名前の RuntimeClass オブジェクトは、サンドボックスコンテナーを使用する Kubernetes クラスターで自動的に作成されます。

  3. 次のコマンドを実行して、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 構成を追加する必要があります。それ以外の場合は、構成は必要ありません。

    nodeSelector:
        alibabacloud.com/container-runtime: Sandboxed-Container.runv
  4. 次のコマンドを実行して、作成されたポッドをクエリします。出力に runv が含まれている場合、ポッドはサンドボックス内で実行されています。

    kubectl get pod busybox-runv -o jsonpath={.spec.runtimeClassName}
  5. 次のコマンドを実行してポッドにログインし、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 の数がホストの CPU の数と同じではないことを示しています。合計メモリは、ポッドメモリとポッドオーバーヘッドの合計です。システムもメモリを消費するため、合計メモリはわずかに小さくなります。