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 descontinuado 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
O GKE no VMware usa o containerd para todos os nós de cluster de administrador.
Suporte para o containerd em um cluster de usuário
O GKE no VMware é compatível com os seguintes tipos de imagem do SO para nós de cluster de usuário:
Tipo de imagem do SO | Ambiente de execução do contêiner |
---|---|
ubuntu_containerd | containerd |
cos | containerd |
windows | containerd |
Restrições e recomendações
A partir da versão 1.13.0, o GKE no VMware não oferece mais suporte ao tipo de imagem do SO
ubuntu
. Todos os nós do cluster precisam usar o ambiente de execução em contêiner.Não é possível fazer upgrade de um cluster que usa o Docker Engine para a versão 1.13. Você precisa atualizar seu cluster para usar o ambiente de execução containerd antes de fazer upgrade para a versão 1.13.
A partir da versão 1.12.0, não é mais possível criar clusters novos que usam o tipo de imagem
ubuntu
do SO. Ou seja, não é mais possível criar novos clusters que usam o ambiente de execução de contêiner do Docker Engine.
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 do Linux para usar o containerd
Para cada pool de nós 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
Atualizar nós do Windows para usar o containerd
No arquivo de configuração do cluster de usuário, defina
enableWindowsDataplaneV2 como true
.
enableWindowsDataplaneV2: true
Atualize o cluster de usuário:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
O comando anterior define o ambiente de execução do contêiner como containerd para todos os nós do Windows no cluster.