本文通過對比runC容器和安全沙箱(runV)容器的效能和建立方式,讓您瞭解安全沙箱容器的優勢以便更好地使用安全沙箱容器。
runC容器和安全沙箱(runV)容器方案對比
配置 | runC容器 | 安全沙箱(runV)容器 |
容器引擎 | Docker、Containerd | Containerd |
容器所在節點型號 | ECS、EBM | EBM |
容器核心 | 與宿主機共用核心 | 獨佔核心 |
容器隔離方式 | Cgroups和Namespace | 輕量虛擬機器 |
Rootfs Graph Driver | OverlayFS | OverlayFS |
Rootfs IO限速 | Cgroups | 否 |
NAS直掛 | 否 | 是 |
雲端硬碟直掛 | 否 | 否 |
容器記錄檔採集 | logtail可直接從節點側採集容器內的日誌。 | logtail sidecar,詳情請參見通過Sidecar-CRD方式採集容器文本日誌。 |
Pod Overhead | 無 | Memory:M=64 Mi+Pod記憶體申請 *2%。當M>512,M最終取值為512 Mi。當M<64,M最終取值為64。 |
runC Pod和安全沙箱(runV)Pod的建立方式對比
您可以通過kubectl命令列工具串連Container ServiceKubernetes版(ACK)叢集,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
- 建立runC Pod
- 可選:通過
runtimeClassName: runc
指定使用runC容器運行時。說明 您也可以不配置,Pod會用預設的容器運行時runC。 - 執行以下命令建立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)
- 通過
runtimeClassName: runv
指定使用安全沙箱容器運行時。 - 可選:執行以下命令查看叢集中已經存在的
runv
這個RuntimeClass對象。kubectl get runtimeclass runv -o yaml
說明 安全沙箱容器叢集中預設建立了RuntimeClass對象runv
。 - 執行以下命令建立安全沙箱Pod。
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(不包括1.16),需添加以下nodeSelector配置;如果您的Kubernetes版本在1.16(包括1.16)以上則不需要添加。nodeSelector: alibabacloud.com/container-runtime: Sandboxed-Container.runv
- 執行以下命令查看建立的Pod。如果輸出結果為
runv
,則表示Pod已經運行在安全沙箱內了。kubectl get pod busybox-runv -o jsonpath={.spec.runtimeClassName}
- 執行以下命令登入容器查看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核心數,記憶體總大小為Pod記憶體與Overhead記憶體之和(系統會消耗一些記憶體,所以看到的記憶體會少一些)。
- 通過