Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Mecanismo de contêiner

Introdução aos mecanismos de contêineres

Os mecanismos de contêineres, um dos componentes mais importantes do Kubernetes, gerenciam o ciclo de vida de imagens e contêineres. O kubelet interage com um tempo de execução de contêiner por meio da Interface de tempo de execução do contêiner (CRI).

CCE suporta contêiner e Docker. containerd é recomendado por seus traços mais curtos, menos componentes, maior estabilidade e menor consumo de recursos de nó.

O Kubernetes removeu o dockershim da v1.24 e não suporta o Docker por padrão. Para obter detalhes, consulte Kubernetes está se movendo do Dockershim: compromissos e próximas etapas. Para garantir a experiência do usuário, o CCE continuará a suportar o Docker na v1.25, mas apenas até a v1.27. Migre nós do Docker para contêineres antes disso. Para mais detalhes, consulte Migração de nós do Docker para containerd.

Mapeamento entre sistemas operacionais de nó e mecanismos de contêiner

Tabela 1 Sistemas operacionais de nó e mecanismos de contêiner em clusters do CCE

SO

Versão de kernel

Mecanismo de contêiner

Rootfs de armazenamento de contêiner

Tempo de execução do contêiner

CentOS 7.x

3.x

Docker

Clusters de v1.23 e posterior suportam containerd.

Clusters de v1.19.16 e anteriores usam Device Mapper.

Clusters de v1.19.16 e posterior usam OverlayFS.

runC

EulerOS 2.3

3.x

Docker

Device Mapper

runC

EulerOS 2.5

3.x

Docker

Device Mapper

runC

EulerOS 2.9

4.x

Docker

Clusters de v1.23 e posterior suportam containerd.

OverlayFS

runC

Ubuntu 18.04

4.x

Docker

Clusters de v1.23 e posterior suportam containerd.

OverlayFS

runC

Huawei Cloud EulerOS 1.1

3.x

Docker

containerd

OverlayFS

runC

Huawei Cloud EulerOS 2.0

5.x

Docker

containerd

OverlayFS

runC

Tabela 2 Sistemas operacionais de nó e mecanismos de contêiner em clusters do CCE Turbo

Tipo de nó

SO

Versão de kernel

Mecanismo de contêiner

Rootfs de armazenamento de contêiner

Tempo de execução do contêiner

Elastic Cloud Server (VM)

CentOS 7.6

3.x

Docker

containerd

OverlayFS

runC

Ubuntu 18.04

4.x

EulerOS 2.9

4.x

Huawei Cloud EulerOS 1.1

3.x

Huawei Cloud EulerOS 2.0

5.x

Elastic Cloud Server (máquina física)

EulerOS 2.9

4.x

containerd

Device Mapper

Kata

Tabela 3 Sistemas operacionais de nó e mecanismos de contêiner em CCE Kunpeng

SO

Versão de kernel

Mecanismo de contêiner

Rootfs de armazenamento de contêiner

Tempo de execução do contêiner

EulerOS 2.8

4.x

Docker

OverlayFS

runC

Comandos comuns de containerd e Docker

containerd não suporta as APIs e a CLI do Docker, mas você pode executar comandos crictl para implementar funções semelhantes.

Tabela 4 Comandos relacionados à imagem

N.º

Comando de Docker

Comando de containerd

Observações

1

docker images [Option] [Image name[:Tag]]

crictl images [Option] [Image name[:Tag]]

Listar imagens locais.

2

docker pull [Option] Image name[:Tag|@DIGEST]

crictl pull [Option] Image name[:Tag|@DIGEST]

Extrair imagens.

3

docker push

Nenhum

Enviar imagens por push.

4

docker rmi [Option] Image...

crictl rmi [Option] Image ID...

Excluir uma imagem local.

5

docker inspect Image ID

crictl inspecti Image ID

Verificar as imagens.

Tabela 5 Comandos relacionados ao contêiner

N.º

Comando de Docker

Comando de containerd

Observações

1

docker ps [Option]

crictl ps [Option]

Listar contêineres.

2

docker create [Option]

crictl create [Option]

Criar um contêiner.

3

docker start [Option] Container ID...

crictl start [Option] Container ID...

Iniciar um contêiner.

4

docker stop [Option] Container ID...

crictl stop [Option] Container ID...

Parar um contêiner.

5

docker rm [Option] Container ID...

crictl rm [Option] Container ID...

Excluir um contêiner.

6

docker attach [Option] Container ID

crictl attach [Option] Container ID

Conectar-se a um contêiner.

7

docker exec [Option] Container ID Startup command [Parameter...]

crictl exec [Option] Container ID Startup command [Parameter...]

Acessar o contêiner.

8

docker inspect [Option] Container name|ID...

crictl inspect [Option] Container ID...

Consultar detalhes do contêiner.

9

docker logs [Option] Container ID

crictl logs [Option] Container ID

Exibir logs do contêiner.

10

docker stats [Option] Container ID...

crictl stats [Option] Container ID

Verificar o uso de recursos do contêiner.

11

docker update [Option] Container ID...

crictl update [Option] Container ID...

Atualizar limites de recursos do contêiner.

Tabela 6 Comandos relacionados ao pod

N.º

Comando de Docker

Comando de containerd

Observações

1

Nenhum

crictl pods [Option]

Listar pods.

2

Nenhum

crictl inspectp [Option] Pod ID...

Ver detalhes do pod.

3

Nenhum

crictl start [Option] Pod ID...

Iniciar um pod.

4

Nenhum

crictl runp [Option] Pod ID...

Executar um pod.

5

Nenhum

crictl stopp [Option] Pod ID...

Parar um pod.

6

Nenhum

crictl rmp [Option] Pod ID...

Excluir um pod.

Os contêineres criados e iniciados pelo containerd são imediatamente excluídos pelo kubelet. containerd não suporta suspender, retomar, reiniciar, renomear e aguardar contêineres, nem criar, importar, exportar, comparar, enviar, pesquisar e rotular imagens do Docker. containerd não suporta cópia de arquivo. Você pode efetuar logon no repositório de imagens modificando o arquivo de configuração de containerd.

Diferenças no rastreamento

  • Docker(Kubernetes 1.23 e versões anteriores):

    kubelet --> docker shim (no processo de kubelet) --> docker --> containerd

  • Docker(solução de comunidade para Kubernetes v1.24 ou posterior):

    kubelet --> cri-dockerd (o kubelet usa a CRI para se conectar a cri-dockerd) --> docker--> containerd

  • containerd:

    kubelet --> plug-in cri (no processo de containerd) --> containerd

Embora o Docker tenha adicionado funções como swarm cluster, docker build e APIs do Docker, ele também introduz bugs. Comparado com containerd, Docker tem mais uma camada de chamadas. Portanto, containerd economiza mais recursos e é mais seguro.

Descrição da versão do mecanismo de contêiner

  • Docker
    • EulerOS/CentOS: docker-engine 18.9.0, uma versão do Docker customizada para CCE. As vulnerabilidades de segurança serão corrigidas em tempo hábil.
    • Ubuntu: docker-ce 18.9.9 (versão comunitária). É aconselhável usar o mecanismo containerd para nós do Ubuntu.

      O docker-ce de código aberto do Ubuntu pode disparar bugs quando operações exec simultâneas são executadas (por exemplo, várias sondas exec são configuradas). É aconselhável usar testes HTTP/TCP.

  • containerd: 1.6.14