Este tópico compara o desempenho e os métodos de criação de pods do runC e do Sandboxed-Container (runV) para que você compreenda os benefícios do sandbox e utilize o Sandboxed-Container com eficiência.
Comparação entre runC e runV
|
Configuração |
runC |
runV |
|
Mecanismo de contêiner |
Docker e containerd |
containerd |
|
Tipo de nó |
Instâncias do Elastic Compute Service (ECS) e ECS Bare Metal (EBM) |
Instâncias EBM |
|
Kernel do contêiner |
Compartilha o kernel do host |
Usa um kernel dedicado |
|
Isolamento do contêiner |
Grupos de controle (cgroups) e namespaces |
VMs leves |
|
Graph Driver do Rootfs |
OverlayFS |
OverlayFS |
|
Limitação de I/O do RootFS |
cgroups |
Sem suporte |
|
Montagem de NAS |
Sem suporte |
Com suporte |
|
Montagem de disco |
Sem suporte |
Sem suporte |
|
Coleta de logs do contêiner |
O Logtail coleta logs diretamente do nó |
|
|
Overhead do pod |
N/A |
Memória = 64 MiB + (solicitação de memória do pod × 2%). Máximo: 512 MiB. Mínimo: 64 MiB. |
Overhead do pod no runV
Cada pod runV gera overhead de memória para a VM leve e os componentes convidados.
Fórmula: memória de overhead do pod = 64 MiB + solicitação de memória do pod × 2%, limitada a 512 MiB e com piso de 64 MiB.
A memória total visível corresponde à solicitação de memória do pod mais o overhead, menos uma pequena reserva do sistema. A contagem de CPU também difere da do host.
Limitações do runV
O runV não oferece suporte aos seguintes recursos:
Limitação de I/O do RootFS: a limitação baseada em cgroup não está disponível para rootfs.
Montagem de disco: não é possível montar discos persistentes diretamente.
Coleta direta de logs: o Logtail não coleta logs diretamente do nó. Use o Logtail Sidecar.
Crie um pod com runC
Pré-requisitos
Crie o pod
-
Crie um pod com runC:
NotaDefinir
runtimeClassName: runcé opcional. O runC é o runtime padrão.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
Crie um pod com runV
Pré-requisitos
Crie o pod
-
(Opcional) Verifique se a RuntimeClass
runvexiste no cluster:kubectl get runtimeclass runv -o yamlNotaUma RuntimeClass
runvé criada automaticamente em clusters ACK com Sandboxed-Container. -
Crie um pod com runV:
ImportanteO campo
nodeSelectoré obrigatório para versões do Kubernetes anteriores à 1.16 e opcional para a versão 1.16 e posteriores.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 -
Verifique se o pod está em execução em um sandbox:
kubectl get pod busybox-runv -o jsonpath={.spec.runtimeClassName}Se a saída exibir
runv, o pod estará em execução dentro de um sandbox. -
Acesse o pod para verificar a CPU e a memória:
kubectl exec -ti pod busybox-runv /bin/sh / # cat /proc/meminfo | head -n1 MemTotal: 1130692 kB / # cat /proc/cpuinfo | grep processor processor : 0A contagem de CPUs difere da do host. A memória total equivale à memória do pod somada ao overhead, menos o uso do sistema.
Próximos passos
Consulte a compatibilidade de campos de pod nas Notas de compatibilidade do Sandboxed-Container.
Consulte a documentação da RuntimeClass para obter informações sobre a seleção de runtime.