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.

É 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. Por padrão, kubelet usa o containerd como o ambiente de execução de contêiner.

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.