All Products
Search
Document Center

Container Service for Kubernetes:Perbedaan antara kontainer runC dan kontainer Sandboxed-Container (runV)

Last Updated:Mar 26, 2026

Kluster ACK mendukung dua runtime kontainer: runC dan runV (Sandboxed-Container). runC adalah runtime kontainer Linux standar yang menggunakan isolasi kernel bersama melalui control groups (cgroups) dan namespace. runV menjalankan setiap Pod di dalam VM ringan khusus, menyediakan kernel independen dan isolasi tingkat perangkat keras.

Perbandingan antara runC dan runV

KomponenrunCrunV
Mesin kontainerDocker dan containerdcontainerd
Tipe nodeInstans Elastic Compute Service (ECS) dan instans ECS Bare Metal (EBM)Instans EBM
Kernel kontainerBerbagi kernel hostMenggunakan kernel khusus
Isolasi kontainerControl groups (cgroups) dan namespaceVM ringan
Rootfs Graph DriverOverlayFSOverlayFS
Pembatasan kecepatan I/O RootFScgroupsTidak didukung
Pemasangan NASTidak didukungDidukung
Pemasangan diskTidak didukungTidak didukung
Pengumpulan log kontainerLogtail mengumpulkan log kontainer langsung dari nodeLogtail Sidecar
beban tambahan PodN/AMemori = 64 MiB + (permintaan memori pod × 2%). Maksimum: 512 MiB. Minimum: 64 MiB.

Overhead Pod pada runV

Setiap Pod runV memiliki overhead memori untuk menjalankan VM ringan dan komponen tamunya.

Rumusnya adalah: memori overhead pod = 64 MiB + permintaan memori pod × 2%, dengan batas maksimum 512 MiB dan minimum 64 MiB.

Total memori yang terlihat di dalam Pod runV sama dengan permintaan memori pod ditambah overhead pod, dikurangi sejumlah kecil memori yang digunakan oleh sistem. Jumlah CPU di dalam Pod juga berbeda dari host.

Batasan runV

Fitur-fitur berikut tidak didukung saat menggunakan runV:

  • Pembatasan kecepatan I/O RootFS: Pembatasan kecepatan I/O berbasis cgroup tidak tersedia untuk rootfs.

  • Pemasangan disk: Volume disk persisten tidak dapat dipasang secara langsung.

  • Pengumpulan log langsung: Logtail tidak dapat mengumpulkan log langsung dari node. Gunakan Logtail Sidecar sebagai gantinya.

Buat Pod yang menggunakan runC

Prasyarat

Sebelum memulai, pastikan Anda telah:

Buat Pod

  1. Jalankan perintah berikut untuk membuat Pod yang menggunakan runC:

    Catatan

    Menyetel runtimeClassName: runc bersifat opsional karena runC merupakan runtime kontainer default.

    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

Buat Pod yang menggunakan runV

Prasyarat

Sebelum memulai, pastikan Anda telah:

Buat Pod

  1. (Opsional) Verifikasi bahwa objek RuntimeClass bernama runv ada di kluster:

    kubectl get runtimeclass runv -o yaml
    Catatan

    Objek RuntimeClass bernama runv dibuat secara otomatis di setiap kluster ACK yang menggunakan Sandboxed-Container.

  2. Jalankan perintah berikut untuk membuat Pod yang menggunakan runV:

    Penting

    Untuk versi Kubernetes sebelum 1.16, bidang nodeSelector wajib digunakan. Untuk versi 1.16 dan seterusnya, bidang ini tidak diperlukan.

    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. Verifikasi bahwa Pod berjalan di dalam sandbox:

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

    Jika output mencakup runv, maka Pod tersebut berjalan di dalam sandbox.

  4. Masuk ke dalam Pod dan periksa konfigurasi CPU serta memorinya:

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

    Jumlah CPU di dalam Pod berbeda dari host. Total memori sama dengan memori Pod ditambah overhead Pod, dan sedikit lebih kecil karena sistem menggunakan sebagian memori.

Langkah selanjutnya