Como usar o containerd para o ambiente de execução de contêiner

10

O ambiente de execução do contêiner é um software responsável por gerenciar contêineres e imagens de contêiner em um nó do Kubernetes. containerd é um ambiente de execução de contêiner gradual do CNCF (Cloud Native Cloud Foundation). Ele é compatível com o Kubernetes de maneira nativa e é considerado mais eficiente e seguro do que o Docker Engine para Kubernetes. Até o Kubernetes 1.20, o Docker Engine era o ambiente de execução do contêiner principal. Entretanto, o Dockershim, o código de integração do Docker Engine no Kubernetes, teve seu uso suspenso no Kubernetes 1.20 e foi removido no Kubernetes 1.24.

A partir de agora, use o containerd nos clusters.

Suporte a contêineres em um cluster de administrador

Os clusters do Anthos no VMware usam o containerd para todos os nós do cluster de administrador.

Suporte para o containerd em um cluster de usuário

Os clusters do Anthos no VMware são compatíveis com os seguintes tipos de imagem do SO para nós do cluster de usuário:

Tipo de imagem do SOAmbiente de execução do contêiner
ubuntuMecanismo do Docker
ubuntu_containerdcontainerd
coscontainerd
windowsDocker Engine ou containerd

O uso de containerd em nós do Windows é um recurso de prévia na versão 1.10.

Restrições e recomendações

  • A partir da versão 1.13.0, os clusters do Anthos no VMware não serão mais compatíveis com o tipo de imagem ubuntu do SO. Todos os nós do cluster usarão o ambiente de execução em contêiner.

  • Não será possível fazer upgrade de um cluster que use o Docker Engine para a versão 1.13.

  • A partir da versão 1.12.0, não será mais possível criar novos clusters que usam o tipo de imagem ubuntu do SO. Ou seja, não será mais possível criar novos clusters que usam o ambiente de execução de contêiner do Docker Engine.

  • Ao fazer upgrade de um cluster de usuário de 1.11 para 1.12, você poderá continuar usando o ambiente de execução do Docker Engine no cluster 1.12. No entanto, recomendamos que você atualize o cluster 1.11 para usar o ambiente de execução em contêiner antes de fazer upgrade para a versão 1.12.

Determinar quais pools de nós estão usando o Docker Engine

Ubuntu

Liste os pools de nós do Ubuntu que usam o Docker Engine:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
    -o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'

Substitua USER_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de usuário.

Exemplo de saída:

ubuntu-node-pool-1
ubuntu-node-pool-3

Windows

Todos os pools de nós do Windows em um cluster de usuário usam o mesmo ambiente de execução do contêiner. O ambiente de execução para nós do Windows é determinado pelo valor de enableWindowsDataplaneV2, que é um campo no arquivo de configuração do cluster de usuário.

Se enableWindowsDataplaneV2 for true, todos os nós do Windows no cluster de usuário usarão o containerd. Se for false, todos os nós do Windows usarão o Docker Engine.

Execute o seguinte comando para determinar quais clusters de usuários têm enableWindowsDataplaneV2 definido como false. Isso informa quais clusters de usuário estão configurados para usar o Docker Engine em nós do Windows.

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
    -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'

A saída lista todos os clusters de usuário configurados para usar o Docker Engine em nós do Windows. Exemplo:

user-cluster-1

Independentemente de um cluster de usuário ter pools de nós do Windows, se o cluster tiver enableWindowsDataplaneV2 definido como false, não será possível fazer upgrade para a versão 1.13.

Atualizar pools de nós para usar o containerd

Para cada pool de nós d0 Linux no arquivo de configuração do cluster de usuário, defina osImageType ubuntu_containerd ou cos.

Exemplo:

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_containerd"

Atualize o cluster de usuário:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Substitua:

  • ADMIN_CLUSTER_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador

  • USER_CLUSTER_CONFIG: é o caminho do arquivo de configuração do cluster de usuário

Windows

A versão 1.10 de clusters do Anthos no VMware não é compatível com a atualização do ambiente de execução do contêiner para nós do Windows no Docker Engine para o containerd.