全部產品
Search
文件中心

Container Service for Kubernetes:runC容器和安全沙箱(runV)容器的區別

更新時間:Dec 24, 2025

本文通過對比runC容器和安全沙箱(runV)容器的效能和建立方式,讓您瞭解安全沙箱容器的優勢以便更好地使用安全沙箱容器。

runC容器和安全沙箱(runV)容器方案對比

配置

runC容器

安全沙箱(runV)容器

容器引擎

Docker、Containerd

Containerd

容器所在節點型號

ECS、EBM

EBM

容器核心

與宿主機共用核心

獨佔核心

容器隔離方式

Cgroups和Namespace

輕量虛擬機器

Rootfs Graph Driver

OverlayFS

OverlayFS

Rootfs IO限速

Cgroups

NAS直掛

雲端硬碟直掛

容器記錄檔採集

日誌採集組件可直接從節點側採集容器內的日誌。

logtail sidecar

Pod Overhead

Memory:M=64 Mi+Pod記憶體申請 *2%。當M>512,M最終取值為512 Mi。當M<64,M最終取值為64。

runC Pod和安全沙箱(runV)Pod的建立方式對比

前提條件

通過kubectl串連叢集

建立runC Pod

  1. 可選:通過runtimeClassName: runc指定使用runC容器運行時。

    說明

    您也可以不配置,Pod會用預設的容器運行時runC。

  2. 執行以下命令建立runC Pod。

    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)

  1. 通過runtimeClassName: runv指定使用安全沙箱容器運行時。

  2. 可選:執行以下命令查看叢集中已經存在的runv這個RuntimeClass對象。

    kubectl get runtimeclass runv -o yaml
    說明

    安全沙箱容器叢集中預設建立了RuntimeClass對象runv

  3. 執行以下命令建立安全沙箱Pod。

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox-runv
      labels:
        app: busybox-runv
    spec:
      runtimeClassName: runv
      # 注意:以下nodeSelector僅在Kubernetes 1.16以下版本需要
      # 如果您的叢集版本是1.16及以上,請刪除以下兩行
      # 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配置;1.16及以上版本不需要添加。

    nodeSelector:
        alibabacloud.com/container-runtime: Sandboxed-Container.runv
  4. 執行以下命令查看建立的Pod。如果輸出結果為runv,則表示Pod已經運行在安全沙箱內了。

    kubectl get pod busybox-runv -o jsonpath={.spec.runtimeClassName}
  5. 執行以下命令登入容器查看CPU和記憶體規格。

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

    通過以上命令返回的結果,可以看出CPU核心數並非宿主機CPU核心數,記憶體總大小為Pod記憶體與Overhead記憶體之和(系統會消耗一些記憶體,所以看到的記憶體會少一些)。