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