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

Container Service for Kubernetes:runc コンテナと Sandboxed-Container (runV) コンテナの違い

最終更新日:Mar 26, 2026

ACK クラスターでは、2 種類のコンテナランタイム(runc および runV(Sandboxed-Container))をサポートしています。runc は、コントロールグループ(cgroups)および名前空間を用いた共有カーネルによる隔離を実現する標準的な Linux コンテナランタイムです。一方、runV は各 Pod を専用の軽量仮想マシン(VM)上で実行し、独立したカーネルおよびハードウェアレベルの隔離を提供します。

runc と runV の比較

コンポーネントruncrunV
コンテナエンジンDocker および containerdcontainerd
ノードタイプElastic Compute Service (ECS) インスタンスおよび ECS Bare Metal (EBM) インスタンスEBM インスタンス
コンテナカーネルホストカーネルを共有専用カーネルを使用
コンテナ隔離コントロールグループ(cgroups)および名前空間軽量 VM
Rootfs Graph DriverOverlayFSOverlayFS
RootFS I/O 速度制限cgroups非対応
NAS マウント非対応対応
ディスクマウント非対応非対応
コンテナログ収集Logtail がノードから直接コンテナログを収集Logtail Sidecar
Pod オーバーヘッド該当なしメモリ = 64 MiB + (Pod メモリリクエスト × 2 %)。上限:512 MiB、下限:64 MiB。

runV における Pod オーバーヘッド

すべての runV Pod は、軽量 VM およびそのゲストコンポーネントを実行するために、一定のメモリオーバーヘッドを必要とします。

計算式は次のとおりです:Pod オーバーヘッドメモリ = 64 MiB + Pod メモリリクエスト × 2 %(上限 512 MiB、下限 64 MiB)。

runV Pod 内で可視化される合計メモリは、Pod メモリリクエストに Pod オーバーヘッドを加算したものから、システムが消費するわずかなメモリを差し引いた値となります。また、Pod 内の CPU 数もホストとは異なります。

runV の制限事項

runV を使用する場合、以下の機能は非対応です。

  • RootFS I/O 速度制限:rootfs に対して cgroup を用いた I/O 速度制限は利用できません。

  • ディスクマウント:永続ディスクボリュームを直接マウントできません。

  • 直接ログ収集:Logtail がノードから直接ログを収集することはできません。代わりに Logtail Sidecar をご使用ください。

runc を使用する Pod の作成

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

Pod の作成

  1. 以下のコマンドを実行して、runc を使用する Pod を作成します。

    説明

    runtimeClassName: 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 を使用する Pod の作成

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

Pod の作成

  1. (任意)クラスター内に runv という名前の RuntimeClass オブジェクトが存在することを確認します。

    kubectl get runtimeclass runv -o yaml
    説明

    Sandboxed-Container を使用する ACK クラスターでは、runv という名前の RuntimeClass オブジェクトが自動的に作成されます。

  2. 以下のコマンドを実行して、runV を使用する Pod を作成します。

    重要

    Kubernetes のバージョンが 1.16 より前の場合、nodeSelector フィールドの指定が必要です。バージョン 1.16 以降では不要です。

    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
  3. Pod がサンドボックス内で実行されているかを確認します。

    kubectl get pod busybox-runv -o jsonpath={.spec.runtimeClassName}

    出力結果に runv が含まれている場合、Pod はサンドボックス内で実行されています。

  4. Pod にログインし、CPU およびメモリ構成を確認します。

    kubectl exec -ti pod busybox-runv /bin/sh
    / # cat /proc/meminfo | head -n1
    MemTotal:        1130692 kB
    / # cat /proc/cpuinfo | grep processor
    processor    : 0

    Pod 内の CPU 数はホストとは異なります。合計メモリは Pod メモリリクエストと Pod オーバーヘッドの合計に相当しますが、システムが一部のメモリを消費するため、若干小さくなります。

次のステップ