Imagens de nó

Nesta página, são descritas as imagens de nós disponíveis para o Kubernetes Engine. Para aprender a escolher uma imagem de nó, consulte este artigo.

Visão geral

Ao criar um pool de nós ou um cluster do GKE, escolha a imagem do sistema operacional que é executada em cada nó. Também é possível fazer o upgrade de um cluster atual para usar um tipo de imagem de nó diferente.

Imagens de nó disponíveis

O GKE oferece as seguintes opções de imagem de nó para o cluster:

Container-Optimized OS

A imagem de nó do Container-Optimized OS é baseada em uma versão recente do kernel do Linux e otimizada para melhorar a segurança do nó. Uma equipe do Google fica responsável pela imagem. Ela aplica patches de segurança com rapidez e itera os recursos. O suporte, a segurança e a estabilidade da imagem do Container-Optimized OS são melhores do que as outras.

Ubuntu

A imagem de nó do Ubuntu foi validada em comparação com os requisitos relacionados do GKE. Use a imagem de nó do Ubuntu se os nós exigirem compatibilidade com os pacotes XFS, CephFS ou Debian.

Windows

Ao criar um cluster usando os pools de nós do Windows Server, é possível utilizar uma imagem de nó do Windows Server versão 2019 (LTSC) ou 1909 (SAC). Essas imagens estão disponíveis apenas no canal de lançamento rápido.

Imagens de nó containerd

O containerd é um elemento importante e o principal componente do ambiente de execução do Docker. Há duas imagens do SO que usam o containerd (em inglês) como o ambiente de execução de contêiner principal diretamente integrado ao Kubernetes: cos_containerd e ubuntu_containerd.

Para depurar o nó ou solucionar problemas dele, use o containerd por meio da ferramenta de linha de comando portátil crictl, criada para os ambientes de execução de contêiner do Kubernetes. O crictl é compatível com funcionalidades comuns para visualizar contêineres e imagens, ler registros e executar comandos nos contêineres. Consulte o guia do usuário do crictl (em inglês) para um conjunto completo de recursos compatíveis e informações de uso.

containerd no Container-Optimized OS (cos_containerd)

O cos_containerd é uma variante da imagem do Container-Optimized OS com o containerd como o ambiente de execução de contêiner principal diretamente integrado ao Kubernetes.

O cos_containerd requer o Kubernetes na versão 1.14.3 ou superior.

Para mais informações, consulte Como usar o Container-Optimized OS com o containerd.

containerd no Ubuntu (ubuntu_containerd)

O ubuntu_containerd é uma variante da imagem do Ubuntu que usa o containerd como o ambiente de execução de contêiner.

O ubuntu_containerd requer o Kubernetes na versão 1.14.3 ou superior.

Comparação de imagens de nó

Veja nas seções a seguir uma comparação dos aspectos operacionais das imagens de nó do Container-Optimized OS e do Ubuntu, incluindo:

  • Gerenciamento de pacotes de software
  • inicialização do sistema
  • coleta de registros
  • Layout do sistema de arquivos
  • Compatibilidade com driver de armazenamento

Gerenciador de pacotes de software

As imagens de nó cos e cos_containerd usam um sistema de arquivos raiz mínimo com suporte integrado para o ambiente de execução de contêiner do Docker (containerd). Ele também funciona como gerenciador de pacotes para instalar softwares no host. A imagem do Ubuntu usa o gerenciador de pacotes Aptitude (em inglês).

Como gerenciar software no Container-Optimized OS

A imagem do Container-Optimized OS não inclui um software de gerenciamento de pacotes, como o apt-get. Não é possível instalar softwares arbitrários nos nós usando mecanismos convencionais. Na verdade, você precisa criar uma imagem de contêiner que tenha o software necessário.

Apenas para fins de depuração, o Container-Optimized OS inclui o CoreOS Toolbox para instalar e executar ferramentas comuns de depuração, como ping, psmisc e pstree.

Para mais informações sobre a depuração dos nós do Container-Optimized OS, consulte os guias de instruções relacionados.

Como gerenciar software no Ubuntu

A imagem do Ubuntu tem o gerenciador de pacotes Aptitude pré-instalado. Use o comando apt-get para instalar pacotes nessas imagens. Por exemplo, para instalar pacotes ceph:

sudo apt-get update
    sudo apt-get install ceph
    

Inicialização do sistema

As imagens de nó do Ubuntu e do Container-Optimized OS usam o systemd para gerenciar recursos e serviços do sistema durante o processo de inicialização dele.

As duas imagens de nó usam arquivos de serviço systemd para definir services no nó e também systemd.targets para agrupar destinos de inicialização por meio de dependências (páginas em inglês).

Coleta de registros

As imagens de nó do Ubuntu e do Container-Optimized OS usam systemd-journald (em inglês) para coletar registros de todo o sistema.

Como exibir registros no Container-Optimized OS e no Ubuntu

Para ver registros em um nó com a imagem do Ubuntu ou do Container-Optimized OS, é preciso usar o comando journalctl (em inglês). Por exemplo, para ver registros do daemon do Docker:

sudo journalctl -u docker

Para ver registros do kubelet:

sudo journalctl -u kubelet

Layout do sistema de arquivos

A imagem de nó do Ubuntu usa o layout padrão do sistema de arquivos do Linux.

O layout do sistema de arquivos de imagens de nó do Container-Optimized OS é otimizado para melhorar a segurança do nó. O espaço do disco de inicialização foi dividido em três tipos de partições:

  • partição raiz, que é montada como somente leitura
  • partições com estado, que podem ser gravadas e têm estado
  • partições sem estado, que podem ser gravadas, mas o conteúdo não permanece durante as reinicializações

Ao usar o Container-Optimized OS, fique atento ao particionamento se você executar serviços próprios que dependam do layout do sistema de arquivos fora dos contêineres.

Como trabalhar com o sistema de arquivos do Container-Optimized OS

Veja na lista a seguir os caminhos no sistema de arquivos de imagens de nó do Container-Optimized OS com as respectivas propriedades e o uso recomendado:

Caminho Propriedades Finalidade
/
  • somente leitura
  • executável
O sistema de arquivos raiz é ativado como somente leitura para manter a integridade. O kernel verifica a integridade do sistema de arquivos raiz durante a inicialização. Ele não é inicializado no caso de erros.
/home
/var
  • gravável
  • não executável
  • com estado
Esses caminhos são para armazenar dados que permanecem durante todo o ciclo de vida do disco de inicialização. Eles são ativados em /mnt/stateful_partition.
/var/lib/google
/var/lib/cloud
/var/lib/docker
/var/lib/kubelet
/var/lib/toolbox
  • gravável
  • executável
  • com estado
Esses caminhos são diretórios de trabalho de pacotes do Compute Engine (como o serviço de gerente de contas), do cloud-init, do Docker, do Kubelet e do Toolbox, respectivamente.
/etc
  • gravável
  • não executável
  • sem estado
  • tmpfs
Normalmente, o /etc mantém sua configuração. Por exemplo, os serviços do systemd definidos por meio do cloud-init. É recomendável registrar o estado pretendido das instâncias no cloud-init, já que o cloud-init é aplicado quando uma instância é criada ou reinicializada.
/tmp
  • gravável
  • não executável
  • sem estado
  • tmpfs
Normalmente, o /tmp é usado como um espaço de rascunho. Não o use para armazenar dados persistentes.
/mnt/disks
  • gravável
  • executável
  • sem estado
  • tmpfs
É possível ativar discos permanentes nos diretórios em /mnt/disks.

Compatibilidade com driver de armazenamento

Cada imagem de nó difere nos tipos de plug-ins de armazenamento com os quais é compatível. Os termos a seguir são usados para descrever a compatibilidade de uma imagem de nó de um determinado driver de armazenamento:

  • Sim – teste/suporte total: esse plug-in de armazenamento tem suporte total e foi completamente testado com a imagem de nó especificada.
  • Sim — teste limitado: esse plug-in de armazenamento funciona com a imagem de nó especificada. No entanto, ele foi testado apenas de maneira limitada, e talvez haja algum comportamento inesperado. No Container-Optimized OS, esses plug-ins serão testados e totalmente compatíveis no futuro.
  • Não compatível: esse plug-in de armazenamento não foi testado nem usado com a imagem de nó especificada. Além disso, o GKE não oferece nenhuma garantia de funcionalidade. Não há planos de testá-lo.
  • Não: esse plug-in de armazenamento não funciona com a imagem de nó especificada devido a uma limitação inerente ao SO do nó ou ao Google Cloud Platform.

Veja na matriz a seguir uma descrição de como cada imagem de nó do GKE é compatível com alguns plug-ins de armazenamento comuns.

Tipo de volume Funciona no Container-Optimized OS (cos)? Ele funciona no Ubuntu?
Google Compute Engine
Persistent Disk (EXT4 ou XFS)
Sim – teste/suporte total
O XFS não é compatível.
Sim — totalmente testado/compatível
NFSv3 Sim — totalmente testado/compatível Sim — totalmente testado/compatível
NFSv4 Sim — totalmente testado/compatível Sim — totalmente testado/compatível
CephFS Não Sim – teste limitado
O driver não é instalado por padrão. Você precisa instalar o cliente ceph, de preferência por meio do DaemonSet.
Cinder Não Não
Fibre Channel Não Não
Flocker Não compatível Não compatível
iSCSI Não Não
RBD Não Não

Modificações na VM do nó

As modificações no disco de inicialização da VM do nó não são mantidas na recriação dos nós. Eles são recriados durante upgrades manuais, upgrades automáticos, reparos automáticos e escalonamento automático. Além disso, os nós são recriados quando você ativa um recurso que exija esse processo, como o GKE Sandbox, a visibilidade intranós e os nós protegidos.

Para manter as modificações durante a recriação dos nós, use um DaemonSet.

Não é recomendável gerenciar softwares importantes fornecidos por uma imagem de nó, como o kernel ou o ambiente de execução do contêiner, seja o containerd ou o docker. As imagens de nó são amplamente testadas, e a modificação de softwares importantes fornecidos nelas coloca o nó em um estado desconhecido e não testável.

Notas da versão das imagens de nós

Container-Optimized OS

O Google oferece uma documentação abrangente para o Container-Optimized OS:

Ubuntu

Com frequência, o Google atualiza as imagens do Ubuntu que estão disponíveis para uso em nós de clusters. Consulte as notas da versão do GKE para informações sobre essas atualizações. Isso inclui um link para um manifesto que lista os pacotes instalados por padrão.

A seguir