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

Os clusters do Anthos no bare metal adicionam o campo de configuração containerRuntime opcional ao arquivo de configuração do cluster. Use esse campo para configurar o ambiente de execução do contêiner que os nós do cluster usam para programar contêineres para os pods do Kubernetes.

A partir dos clusters do Anthos no bare metal 1.7, é possível fazer com que kubelet chame a interface do ambiente de execução do contêiner diretamente. Com essa opção, é possível separar o kubelet do Docker removendo a necessidade do daemon do Docker.

Essa alteração é necessária devido aos objetivos do Kubernetes para suspender o uso do daemon do Docker e tornar o containerd padrão. O Kubernetes planeja enviar avisos a partir da versão 1.20 e encerrar a suspensão de uso pela versão 1.24.Essa alteração está alinhada com a alteração planejada para tornar o containerd o padrão do GKE.

Em clusters do Anthos no bare metal, você pode configurar kubelet para usar o Docker ou containerd por meio do novo campo containerRuntime.

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.3 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:

    • Para Docker:/etc/docker/certs.d/
    • Paracontainerd:
      • /etc/docker/certs.d/
      • /etc/containerd/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:

  • docker
  • containerd

Se o campo estiver vazio ou não estiver definido, os clusters do Anthos no bare metal usarão docker por padrão. Para usar containerd, a entrada na sua 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: containerd

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 de uma das seguintes versões:

  • 1.6.0
  • 1.6.1
  • 1.6.2

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.

Altere o ambiente de execução para containerd

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:

  • docker
  • containerd

Para usar containerd, 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: containerd

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

bmctl upgrade cluster

Alterações no plano de controle após o upgrade

Durante o upgrade, os clusters do Anthos em bare metal executarão as seguintes tarefas em nós do plano de controle para aceitar o balanceador de carga se o ambiente de execução tiver sido definido como containerd:

  • Exclua os serviços docker.*.service
  • Instalar serviços de container.*.service
  • Reiniciar os serviços systemd haproxy e keepalived

Os clusters que usam o ambiente de execução docker mantêm os serviços systemd haproxy e keepalived atuais do sistema após o upgrade.

Como atualizar seus clusters com containerd definido como o ambiente de execução

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

bmctl update cluster

Como redefinir os clusters com containerd definido como o ambiente de execução

Se você definir o ambiente de execução do contêiner como containerd, 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/

Verifique o status do ambiente de execução do containerd

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

systemctl status containerd