Conceitos do Kubernetes para o GDC

Este documento descreve os fundamentos básicos da plataforma de orquestração de contêineres de código aberto Kubernetes. Muitos componentes do Google Distributed Cloud (GDC) isolado por air-gap são baseados no Kubernetes, e grande parte da documentação pressupõe que você já esteja familiarizado com os conceitos e a terminologia básicos do Kubernetes. Se você não conhece o Kubernetes, use este documento como referência para leitura recomendada e comece a usar.

Aprender os fundamentos do Kubernetes é essencial para projetar, implantar e gerenciar aplicativos do GDC e componentes do sistema subjacentes. Os seguintes profissionais técnicos precisam entender o Kubernetes para operar o GDC com sucesso:

  • Operadores do grupo de operadores de infraestrutura responsáveis por instalar e manter a infraestrutura de software e hardware do GDC.
  • Administradores do grupo de administradores da plataforma responsáveis por projetar infraestruturas e arquiteturas de aplicativos resilientes no GDC.
  • Desenvolvedores no grupo de operadores de aplicativos responsáveis pela criação de aplicativos.

Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Sobre o Kubernetes

O Kubernetes é uma plataforma de orquestração de contêineres de código aberto. Basicamente, um cluster do Kubernetes é um conjunto de máquinas de worker chamadas de nós que executam aplicativos em contêineres. Todo o cluster é gerenciado pelo plano de controle, que inclui componentes como o servidor de API, o programador e o banco de dados etcd, e é responsável por manter o estado do cluster.

Os aplicativos são empacotados em pods, as menores unidades implantáveis no Kubernetes, que podem conter um ou mais contêineres e ser executados nos nós. Para organizar recursos em um cluster, geralmente para diferentes equipes ou ambientes, o Kubernetes usa namespaces.

O ciclo de vida e o estado dos pods são gerenciados por controladores. Por exemplo, os objetos Deployment gerenciam atualizações rotativas, e os objetos ReplicaSet garantem que um número específico de réplicas de pods esteja em execução. Para fornecer endpoints de rede estáveis, como endereços IP e nomes DNS para acessar pods, o Kubernetes usa serviços.

Como o armazenamento de contêineres é temporário por padrão, o Kubernetes oferece várias abstrações de armazenamento, como volumes e volumes permanentes, para gerenciar dados.

Para proteger o acesso aos recursos do cluster e à API Kubernetes, o Kubernetes usa o controle de acesso baseado em papéis (RBAC) para definir papéis, papéis de cluster e vinculações para conceder permissões específicas a usuários e contas de serviço.

Principais conceitos

Confira a seguir alguns conceitos-chave que usamos em toda a documentação do GDC. Esta não é uma lista completa de conceitos do Kubernetes. Você pode ler e explorar muito mais nos tópicos fornecidos da documentação do Kubernetes e na nossa leitura recomendada.

Nós e clusters

Todas as cargas de trabalho do Kubernetes são executadas em nós. No GDC, um nó é uma máquina virtual (VM). Em outras plataformas do Kubernetes, um nó pode ser uma máquina física ou virtual. Cada nó é gerenciado pelo plano de controle do Kubernetes e tem todos os componentes necessários para executar pods. Um cluster é um conjunto de nós que podem ser tratados como uma única entidade, em que você implanta um aplicativo em contêiner.

Saiba mais na documentação do Kubernetes:

Plano de controle do Kubernetes

O plano de controle do Kubernetes é um conjunto de componentes do sistema que gerenciam o estado geral do cluster, incluindo o servidor da API Kubernetes, que permite interagir com clusters e aplicativos usando a CLI kubectl e outras ferramentas, um programador para programar pods em nós disponíveis e os controladores que rastreiam e gerenciam o estado do cluster. O plano de controle é fornecido e gerenciado pela GDC.

Para mais informações, consulte a documentação do Kubernetes sobre Componentes do plano de controle.

Pods

No Kubernetes, os aplicativos conteinerizados são executados em um pod. Um pod é a menor unidade de computação implantável que você pode criar e gerenciar no Kubernetes. Um pod tem um ou mais contêineres. Quando um pod executa vários contêineres, como um servidor de aplicativos e um servidor proxy, eles são gerenciados como uma única entidade e compartilham os recursos do pod.

Saiba mais na documentação do Kubernetes:

Namespaces

Os namespaces do Kubernetes fornecem um mecanismo para agrupar e selecionar ainda mais recursos, como pods e serviços, em um cluster. Por exemplo, se você tiver várias equipes de aplicativos executando cargas de trabalho em um único cluster.

Para mais informações, consulte a documentação do Kubernetes sobre namespaces.

Controladores

Os controladores do Kubernetes rastreiam e gerenciam o estado dos clusters e das cargas de trabalho com base no estado especificado (por exemplo, "Quero executar três pods desse tipo neste cluster, com este contêiner em cada pod"). Controladores diferentes rastreiam tipos de recursos diferentes do Kubernetes, incluindo os seguintes:

Os controladores do Kubernetes rastreiam e gerenciam o estado dos clusters e cargas de trabalho com base no estado especificado. Por exemplo, é possível definir o comportamento de um cluster para executar três pods, com um contêiner designado em cada pod. Controladores diferentes rastreiam tipos de recursos diferentes do Kubernetes, incluindo o seguinte:

  • Implantação: um recurso personalizado Deployment é um objeto do Kubernetes que representa um ou mais pods idênticos, chamados de réplicas. Uma implantação executa várias réplicas dos pods distribuídos entre os nós de um cluster. Uma implantação substitui automaticamente todos os pods com falha ou que não respondem.
  • StatefulSet: um recurso personalizado StatefulSet é como uma implantação, mas mantém uma identidade exclusiva permanente para cada um dos pods. StatefulSet recursos podem ser úteis em aplicativos com estado persistente, como aplicativos com estado.
  • DaemonSet: um recurso personalizado DaemonSet permite adicionar pods padrão a alguns ou todos os nós. Esses serviços geralmente ajudam suas cargas de trabalho, como um daemon de coleta de registros ou um daemon de monitoramento.
  • ReplicaSet: um recurso personalizado ReplicaSet é um conjunto de pods idênticos. Um ReplicaSet geralmente é gerenciado como parte de um recurso Deployment.

Saiba mais na documentação do Kubernetes:

Serviço do Kubernetes

Por padrão, não é possível controlar em qual nó do cluster um pod está sendo executado. Portanto, os pods não têm endereços IP estáveis. Para receber um endereço IP de um aplicativo em execução no Kubernetes, defina uma abstração de rede sobre os pods chamada de Serviço do Kubernetes. Um serviço do Kubernetes fornece um endpoint de rede estável para um conjunto de pods. Há vários tipos de serviços, incluindo serviços LoadBalancer, que expõem um endereço IP externo para que você possa acessar aplicativos de fora do cluster.

O Kubernetes também tem um sistema DNS integrado para resolução de endereços internos, que atribui um nome DNS, como helloserver.default.cluster.local, aos serviços. Isso permite que os pods dentro do cluster alcancem outros pods no cluster usando um endereço estável. Não é possível usar esse nome DNS fora do cluster, como na CLI gdcloud.

Para mais informações, consulte a documentação de Serviços do Kubernetes.

Armazenamento

Se os aplicativos precisarem salvar dados que existam além do ciclo de vida do pod, como em aplicativos com estado, use um objeto PersistentVolume do Kubernetes para provisionar esse armazenamento. Também é possível usar o armazenamento temporário, que é destruído quando o pod correspondente é encerrado.

Saiba mais na documentação do Kubernetes:

Controle de acesso baseado em papéis

O Kubernetes inclui um mecanismo de controle de acesso baseado em papéis (RBAC) que permite criar políticas de autorização para acessar seus clusters e recursos. Ao usar o GDC, você geralmente usa uma combinação de RBAC do Kubernetes e Identity and Access Management (IAM) do GDC para proteger seus aplicativos.

Para mais informações, consulte a documentação do Kubernetes sobre controle de acesso baseado em papéis.

Esta seção fornece links para recursos recomendados para saber mais sobre o Kubernetes. Em especial, o Kubernetes.io, o site oficial do Kubernetes, tem material abrangente e confiável sobre tudo relacionado ao Kubernetes.

Guias e tutoriais externos

Documentação de referência

  • Glossário do Kubernetes: uma lista abrangente e padronizada de terminologia do Kubernetes. Se você não tiver certeza sobre um termo do Kubernetes, consulte o glossário.

A seguir