Usar o containerd para o tempo de execução do contentor

O tempo de execução do contentor é um software responsável pela gestão de contentores e imagens de contentores num nó do Kubernetes. O containerd é um tempo de execução do contentor CNCF (Cloud Native Cloud Foundation) graduado. É compatível com o Kubernetes de forma nativa e é considerado mais eficiente em termos de recursos e seguro do que o Docker Engine para o Kubernetes. Até ao Kubernetes 1.20, o Docker Engine era o tempo de execução do contentor principal. No entanto, o Dockershim, o código de integração do Docker Engine no Kubernetes, foi descontinuado no Kubernetes 1.20 e foi removido no Kubernetes 1.24.

A partir de agora, deve usar o containerd nos seus clusters.

Suporte para o containerd num cluster de administrador

O Google Distributed Cloud usa o containerd para todos os nós do cluster de administração.

Suporte do containerd num cluster de utilizador

O Google Distributed Cloud suporta os seguintes tipos de imagens de SO para nós do cluster de utilizadores:

Tipo de imagem do SOTempo de execução do contentor
ubuntu_containerdcontainerd
coscontainerd
windowscontainerd

Restrições e recomendações

  • A partir da versão 1.13.0, o Google Distributed Cloud já não suporta o tipo de imagem do SO ubuntu. Todos os nós do cluster têm de usar o tempo de execução do containerd.

  • Não pode atualizar um cluster que use o Docker Engine para a versão 1.13. Tem de atualizar o cluster para usar o tempo de execução do containerd antes de atualizar para a versão 1.13.

  • A partir da versão 1.12.0, já não pode criar novos clusters que usem o tipo de imagem do SO ubuntu. Ou seja, já não pode criar novos clusters que usem o tempo de execução de contentores do Docker Engine.

Determine que node pools estão a usar o Docker Engine

Ubuntu

Liste os node pools 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 ficheiro kubeconfig do cluster de utilizadores.

Exemplo de saída:

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

Windows

Todos os pools de nós do Windows num cluster de utilizador usam o mesmo tempo de execução do contentor. O tempo de execução para os nós do Windows é determinado pelo valor de enableWindowsDataplaneV2, que é um campo no ficheiro de configuração do cluster de utilizadores.

Se enableWindowsDataplaneV2 for true, todos os nós do Windows no cluster de utilizadores usam o containerd. Se for false, todos os nós do Windows usam o Docker Engine.

Execute o seguinte comando para determinar que clusters de utilizadores têm o valor enableWindowsDataplaneV2 definido como false. Isto indica que clusters de utilizadores estão configurados para usar o Docker Engine para 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 apresenta todos os clusters de utilizadores configurados para usar o Docker Engine para nós do Windows. Por exemplo:

user-cluster-1

Independentemente de um cluster de utilizadores ter ou não node pools do Windows, se o cluster tiver enableWindowsDataplaneV2 definido como false, não vai poder atualizá-lo para a versão 1.13.

Atualize os node pools do Linux para usar o containerd

Para cada conjunto de nós no ficheiro de configuração do cluster de utilizador, defina osImageType ubuntu_containerd ou cos.

Exemplo:

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

Atualize o cluster de utilizadores:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Substitua o seguinte:

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

  • USER_CLUSTER_CONFIG: o caminho do ficheiro de configuração do cluster do utilizador

Atualize os nós do Windows para usar o containerd

No ficheiro de configuração do cluster de utilizadores, defina enableWindowsDataplaneV2 como true.

enableWindowsDataplaneV2: true

Atualize o cluster de utilizadores:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

O comando anterior define o tempo de execução do contentor como containerd para todos os nós do Windows no cluster.