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
| 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 |
| 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 |
| 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.
| 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. |
| 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. |
| 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