Arquitetura do cluster do GKE


Esta página descreve a arquitetura dos clusters do Google Kubernetes Engine (GKE) que executam as suas cargas de trabalho em contentores. Use esta página para saber mais sobre o plano de controlo, os nós e como os vários componentes do cluster do GKE interagem entre si.

Esta página destina-se a administradores, arquitetos e operadores que definem soluções de TI e arquitetura de sistemas. Para saber mais sobre as funções comuns e exemplos de tarefas que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud

Antes de ler esta página, certifique-se de que conhece a arquitetura do cluster do Kubernetes.

Um cluster do GKE consiste num painel de controlo e em máquinas de trabalho denominadas nós. O plano de controlo e os nós compõem o sistema de orquestração do cluster do Kubernetes. O GKE Autopilot gere toda a infraestrutura subjacente dos clusters, incluindo o plano de controlo, os nós e todos os componentes do sistema.

Se usar o modo padrão do GKE, o GKE gere o plano de controlo e os componentes do sistema, e o utilizador gere os nós.

O diagrama seguinte mostra a arquitetura de um cluster do GKE:

Este diagrama mostra os seguintes componentes:

  • Plano de controlo: gerido pelo GKE. Executa o servidor da API Kubernetes, controladores de cargas de trabalho, o programador do Kubernetes e o armazenamento do estado do cluster.
  • Nós: geridos pelo GKE no modo Autopilot e geridos pelos clientes no modo Standard. Todos os seus pods são executados em nós.
  • Outros Google Cloud serviços: disponíveis para integração com o GKE.

Acerca do plano de controlo

O plano de controlo executa processos como o servidor da API Kubernetes, o programador e os controladores de recursos principais. O GKE gere o ciclo de vida do plano de controlo desde a criação até à eliminação do cluster. Isto inclui atualizações à versão do Kubernetes em execução no plano de controlo, que o GKE realiza automaticamente ou manualmente a seu pedido, se preferir atualizar antes da programação automática.

Plano de controlo e API Kubernetes

O painel de controlo é o ponto final unificado do seu cluster. Interage com o plano de controlo através de chamadas à API Kubernetes. O plano de controlo executa o processo do servidor da API Kubernetes (kube-apiserver) para processar pedidos de API. Pode fazer chamadas à API Kubernetes das seguintes formas:

  • Chamadas diretas: HTTP/gRPC
  • Chamadas indiretas: clientes de linha de comandos do Kubernetes, como kubectl, ou a consolaGoogle Cloud .

O processo do servidor da API é o centro de todas as comunicações do cluster. Todos os componentes do cluster interno, como nós, processos do sistema e controladores de aplicações, atuam como clientes do servidor da API.

Os seus pedidos de API indicam ao Kubernetes qual é o estado desejado para os objetos no seu cluster. O Kubernetes tenta manter constantemente esse estado. O Kubernetes permite-lhe configurar objetos na API de forma imperativa ou declarativa.

Para saber mais sobre a gestão de objetos no Kubernetes, consulte as seguintes páginas:

Plano de controlo e base de dados do estado do cluster

O projeto Kubernetes de código aberto usa o etcd como a base de dados de armazenamento para todos os dados do cluster por predefinição. O estado do cluster é mantido num armazenamento de chave-valor que contém informações sobre o estado de cada objeto da API Kubernetes no seu cluster. Por exemplo, a base de dados do estado do cluster armazena todos os segredos, os ConfigMaps e as implementações.

Os clusters do GKE armazenam o estado do cluster num dos seguintes armazenamentos de chave-valor:

  • etcd: o GKE armazena o estado do cluster em instâncias do etcd que são executadas em todas as máquinas virtuais (VMs) do plano de controlo.
  • Spanner: o GKE armazena o estado do cluster no Spanner. A base de dados do Spanner não é executada no plano de controlo do cluster.

Independentemente do tipo de base de dados, todos os clusters do GKE publicam a API etcd no plano de controlo. O servidor da API Kubernetes usa a API etcd para comunicar com a base de dados de estado do cluster de back-end.

Interação entre o plano de controlo e os nós

O plano de controlo gere o que é executado em todos os nós do cluster. O plano de controlo agenda cargas de trabalho e gere o ciclo de vida, o escalamento e as atualizações das cargas de trabalho. O plano de controlo também gere os recursos de rede e de armazenamento para essas cargas de trabalho. O plano de controlo e os nós comunicam entre si através das APIs Kubernetes.

Interações do plano de controlo com o Artifact Registry

Quando cria ou atualiza um cluster, o GKE extrai imagens de contentores para o software do sistema Kubernetes em execução no plano de controlo e nos nós a partir de repositórios do Artifact Registry no domínio pkg.dev ou gcr.io. Uma indisponibilidade que afete estes registos pode fazer com que as seguintes ações falhem:

  • Criação de novo cluster
  • Atualizações da versão do cluster

As interrupções nas cargas de trabalho podem ocorrer mesmo sem a sua intervenção, consoante a natureza e a duração específicas da indisponibilidade.

Se a indisponibilidade do repositório do Artifact Registry for regional, podemos redirecionar pedidos para uma zona ou uma região que não seja afetada pela indisponibilidade.

Para verificar o estado dos Google Cloud serviços, aceda ao Google Cloud painel de controlo de estado.

Prática recomendada:

Implemente em várias regiões para permitir a disponibilidade de aplicações durante interrupções regionais.

Acerca dos nós

Os nós são as máquinas de trabalho que executam as suas aplicações contentorizadas e outras cargas de trabalho. As máquinas individuais são máquinas virtuais (VMs) do Compute Engine criadas pelo GKE. O plano de controlo gere e recebe atualizações sobre o estado autorreferido de cada nó.

Um nó executa os serviços necessários para suportar os contentores que compõem as cargas de trabalho do seu cluster. Estes incluem o tempo de execução e o agente do nó do Kubernetes (kubelet), que comunica com o plano de controlo e é responsável por iniciar e executar contentores agendados no nó.

O GKE também executa vários contentores do sistema que são executados como agentes por nó, denominados DaemonSets, que oferecem funcionalidades como a recolha de registos e a conetividade de rede no cluster.

Prática recomendada:

Use stdout para aplicações contentorizadas porque stdout permite que a sua plataforma processe os registos de aplicações.

A gestão de nós varia consoante o modo de funcionamento do cluster, da seguinte forma:

Componente de nó Modo Autopilot Modo padrão
Ciclo de vida

Totalmente gerido pelo GKE, incluindo:

O GKE gere o seguinte:

Pode gerir o seguinte:

Visibilidade Veja os nós através de kubectl. Máquinas virtuais do Compute Engine subjacentes não visíveis nem acessíveis na CLI gcloud ou na consola Google Cloud . Veja os nós através do kubectl, da CLI gcloud e da consola Google Cloud . Ver e aceder às VMs do Compute Engine subjacentes.
Conetividade Não existe uma ligação direta às VMs subjacentes. Estabeleça ligação às VMs subjacentes através de SSH.
Sistema operativo (SO) do nó Gerido pelo GKE. Todos os nós usam o SO otimizado para contentores com o containerd (cos_containerd). Escolha um sistema operativo para os seus nós.
Seleção de hardware da máquina

Pedir classes de computação em pods com base no exemplo de utilização.

O GKE gere a configuração, o planeamento, a quantidade e o ciclo de vida das máquinas.

Escolha e configure os tipos de máquinas do Compute Engine quando criar pools de nós. Configure as definições de dimensionamento, escala, quantidade, programação e localização com base na necessidade.