Alterar o ambiente de execução do contêiner de docker para containerd

Os clusters usam um ambiente de execução de contêiner para criar e executar pods do Kubernetes. Antes da versão 1.13 dos clusters do Anthos em bare metal, o ambiente de execução do contêiner poderia ser Docker Engine ou containerd. No entanto, o ambiente de execução do contêiner só pode ser containerd a partir da versão 1.13 dos clusters do Anthos em bare metal.

Se os clusters usam Docker Engine como o ambiente de execução do contêiner, altere-o para containerd. Nesta página, explicamos como definir o ambiente de execução do contêiner como containerd.

Para especificar o ambiente de execução do contêiner, defina o valor do campo containerRuntime no arquivo de configuração do cluster. No entanto, apenas definir ou alterar o valor desse campo não é suficiente. Você precisa criar um novo cluster ou fazer upgrade de um cluster atual para que a alteração entre em vigor. Em outras palavras, só é possível alterar o ambiente de execução do contêiner ao criar um novo cluster ou ao fazer upgrade de um cluster atual.

O Kubernetes 1.24 encerra a compatibilidade com o Docker Engine

O componente dockershim no Kubernetes permite que os nós do cluster usem o ambiente de execução do contêiner do Docker Engine. No entanto, o Kubernetes 1.24 removeu o componente dockershim. Como os clusters do Anthos em bare metal versão 1.13 serão executados no Kubernetes 1.24, a versão 1.13 e mais recentes não poderão mais usar o Docker Engine como um ambiente de execução de contêiner.

Ao fazer upgrade ou criação de clusters, observe as seguintes regras de ambiente de execução do contêiner:

  • Use containerd para clusters da versão 1.13 e mais recentes.
  • Não é possível criar clusters da versão 1.12 que usam o ambiente de execução de contêiner do Docker Engine.
  • É possível fazer upgrade de um cluster 1.11 que use o Docker Engine para um cluster 1.12 que use o Docker Engine. No entanto, recomendamos que você passe para containerd antes do upgrade.

A instalação do Docker usada para criar imagens não está relacionada ao ambiente de execução do contêiner do Docker Engine no cluster do Kubernetes. Ainda é possível usar o Docker para criar imagens e contêineres de aplicativo. Esses contêineres ainda funcionarão no cluster.

Continue instalando o Docker na sua estação de trabalho de administrador porque o comando bmctl requer o Docker para operações, como a criação de clusters. Esse uso do Docker também não é afetado pela descontinuação do dockershim.

Para instruções detalhadas sobre como alterar o ambiente de execução do contêiner de docker para containerd, consulte as seções a seguir.

Antes de começar

  • Lembre-se de que, ao fazer upgrade de um cluster, você precisa fazer upgrade do cluster de administrador antes de fazer upgrade dos clusters de usuário.

  • Certifique-se de que sua implantação seja compatível com o containerd versão 1.4.6 ou superior. Os clusters do Anthos em bare metal instalam essa versão em qualquer versão anteriormente instalada de containerd.

  • Verifique se os clusters do Anthos em bare metal podem instalar os seguintes arquivos:

    • Arquivos binários

      • /usr/bin/containerd
      • /usr/bin/containerd-shim
      • /usr/bin/containerd-shim-runc-v1
      • /usr/bin/containerd-shim-runc-v2
      • /usr/bin/crictl
      • /usr/bin/ctr
      • /usr/local/sbin/runc
    • Arquivos de configuração

      • /etc/crictl.yaml
      • /etc/systemd/system/containerd.service
      • /etc/containerd/config.toml
      • /etc/containerd/certs.d/
      • /etc/systemd/system/containerd.service.d/09-proxy.conf Esse arquivo só é instalado quando você configura um proxy HTTP.
  • Verifique se os clusters do Anthos em bare metal podem instalar o seguinte certificado nos seus nós: /etc/containerd/certs.d/

Defina containerd como o ambiente de execução do contêiner para um novo cluster

Se a seção spec.nodeConfig do arquivo de configuração do cluster estiver vazia ou não definida, o ambiente de execução do contêiner do cluster será definido automaticamente como containerd quando um novo cluster for criado.

No entanto, se você quiser definir explicitamente containerd como o ambiente de execução do contêiner para um novo cluster, defina o campo containerRuntime como containerd na seção spec.nodeConfig do arquivo de configuração do cluster. Depois disso, a configuração do cluster terá esta aparência:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  nodeConfig:
    containerRuntime: containerd

Ao usar esse arquivo de configuração de cluster para criar um novo cluster, o ambiente de execução do contêiner será containerd.

Alterar o ambiente de execução do contêiner de docker para containerd ao fazer upgrade de um cluster

Para alterar o ambiente de execução do contêiner de docker para containerd ao fazer upgrade de um cluster, conclua as seguintes etapas:

  1. Altere o campo containerRuntime de docker para containerd na seção spec.nodeConfig do arquivo de configuração do cluster. Depois disso, a configuração do cluster vai ficar assim:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      nodeConfig:
        containerRuntime: containerd
    
  2. Execute o comando a seguir para fazer upgrade do cluster:

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Substitua:

    • CLUSTER_NAME pelo nome do cluster que você quer atualizar.
    • ADMIN_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de administrador.

Verificar o status do ambiente de execução do contêiner

Para verificar o status do ambiente de execução do contêiner, execute o seguinte comando:

systemctl status containerd

Alterar o ambiente de execução do contêiner de containerd para docker ao fazer upgrade de um cluster

É possível usar qualquer um dos ambientes de execução do contêiner ao fazer upgrade dos clusters do Anthos na versão bare metal 1.11 para a 1.12. No entanto, recomendamos que você use o containerd, porque o ambiente de execução do contêiner Docker Engine não é compatível com a versão 1.13.0 e mais recentes.