Altere o ambiente de execução do contêiner

Nesta página, explicamos como especificar o ambiente de execução de contêiner que o cluster usa para executar pods do Kubernetes. Para especificar o ambiente de execução do contêiner, defina o valor do campo containerRuntime no arquivo de configuração do cluster.

Só é possível alterar o valor do campo containerRuntime ao fazer upgrade ou instalação de um cluster. Esse campo é opcional, e o padrão será containerd se você deixá-lo indefinido.

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 podem mais usar o Docker Engine.

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 fazer upgrade de um cluster 1.12 que usa o Docker para a versão 1.13.
  • 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 para um cluster 1.12 que use o Docker. No entanto, recomendamos que você passe para o contêiner 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.

O Docker precisa ser instalado na estação de trabalho do administrador. 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 especificar o ambiente de execução do contêiner usado no cluster, consulte as seções a seguir.

Antes de começar

  • Identifique qual ambiente de execução você quer que os clusters usem. Só é possível alterar o valor do campo do ambiente de execução do contêiner ao fazer upgrade ou instalação de um cluster.

  • 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, instalados para ambos os ambientes de execução:

    • 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 os seguintes certificados nos nós, dependendo do ambiente de execução escolhido:

    • Paracontainerd:
      • /etc/docker/certs.d/
      • /etc/containerd/certs.d/
    • Para Docker:/etc/docker/certs.d/

Configurar o ambiente de execução do contêiner para um novo cluster

Para definir o ambiente de execução do contêiner para um novo cluster, defina o campo containerRuntime na seção nodeConfig em spec no arquivo de configuração do cluster. Os clusters do Anthos no bare metal são compatíveis com os seguintes valores:

  • containerd
  • docker

Se o campo estiver vazio ou não estiver definido, os clusters do Anthos no bare metal usarão containerd por padrão. Para usar o Docker, a entrada na configuração deve ser semelhante ao exemplo a seguir:

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

Configurar o ambiente de execução do contêiner ao fazer upgrade de um cluster

É possível configurar clusters do Anthos em Bare Metal para usar um ambiente de execução de contêiner diferente ao fazer upgrade. Só é possível alterar o valor do campo do ambiente de execução do contêiner ao fazer upgrade ou instalação de um cluster.

Requisitos

  • Fazer upgrade de clusters administrativos antes dos clusters de usuários
  • Defina o valor do campo containerRuntime no seu arquivo de configuração antes de fazer upgrade dos clusters.

Alterar o ambiente de execução para o Docker

Para definir o ambiente de execução do contêiner durante um upgrade, defina o campo containerRuntime na seção nodeConfig em spec no arquivo de configuração do cluster. Os clusters do Anthos no bare metal são compatíveis com os seguintes valores:

  • containerd
  • docker

Para usar o Docker, altere seu arquivo de configuração para parecer com o seguinte exemplo:

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

Para definir o ambiente de execução do contêiner dos nós do cluster como docker como parte do upgrade, execute o comando a seguir para fazer upgrade dos clusters:

bmctl upgrade cluster

Atualizar seus clusters com o Docker definido como o ambiente de execução

Se você definir o ambiente de execução do contêiner como docker, o comando a seguir atualizará os certificados do registro de imagem em /etc/containerd/certs.d/

bmctl update cluster

Redefinir os clusters que usam o containerd como o ambiente de execução

Se você usar o ambiente de execução de contêiner padrão, o comando a seguir não excluirá configurações, arquivos binários ou diretórios:

bmctl reset cluster

Durante a redefinição, o serviço containerd continua em execução, mas os contêineres que o Kubernetes programou são interrompidos e removidos do ambiente de execução containerd.

Exclua os seguintes arquivos binários e diretórios para concluir a redefinição:

  • /etc/crictl.yaml
  • /etc/systemd/system/containerd.service
  • /etc/systemd/system/containerd.service.d/
  • /etc/containerd/config.toml
  • /etc/containerd/certs.d/

Se você estiver usando o Docker como ambiente de execução, nenhuma limpeza será realizada durante a redefinição.

Verificar o status do ambiente de execução

Para verificar o status de como parte da verificação de integridade da máquina, execute o seguinte comando:

systemctl status RUNTIME

Substitua RUNTIME pelo ambiente de execução escolhido: containerd ou docker.