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) com isolamento físico 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 estiver familiarizado com o Kubernetes, use este documento como referência para leitura recomendada para começar.
Aprender os princípios básicos 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 de plataforma responsáveis por projetar infraestrutura resiliente e arquiteturas de aplicativos no GDC.
- Desenvolvedores do 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 trabalho 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 em Kubernetes, que podem conter um ou mais contêineres e ser executados nos nós. Para organizar recursos em um cluster, geralmente para equipes ou ambientes diferentes, 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 contínuas 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
A seguir, apresentamos alguns conceitos importantes que usamos em toda a documentação do GDC. Esta não é uma lista completa de conceitos do Kubernetes. Você pode encontrar muito mais para ler e explorar nos tópicos fornecidos na 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 de API do 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 pelo GDC.
Para mais informações, consulte a documentação Componentes do plano de controle do Kubernetes.
Pods
No Kubernetes, os aplicativos em contêineres 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 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 Namespaces do Kubernetes.
Controladores
Os controladores do Kubernetes rastreiam e gerenciam o estado dos clusters e cargas de trabalho com base no estado especificado (por exemplo, "Quero executar três desse pod neste cluster, com este contêiner em cada pod"). Diferentes controladores rastreiam diferentes tipos de recursos do Kubernetes, incluindo o seguinte:
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. Diferentes controladores rastreiam diferentes tipos de recursos 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. Os recursosStatefulSetpodem ser úteis em aplicativos com estado persistente, como aplicativos com estado. - DaemonSet: um recurso personalizado
DaemonSetpermite adicionar pods padrão a alguns ou a todos os nós. Esses são geralmente serviços auxiliares para 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. UmReplicaSetgeralmente é gerenciado como parte de um recursoDeployment.
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 para um aplicativo em execução
no Kubernetes, defina uma abstração de rede sobre os pods
chamado 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 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 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 clusters e recursos. Ao usar o GDC, você geralmente usa uma combinação de RBAC do Kubernetes e o Identity and Access Management (IAM) do GDC para proteger seus aplicativos.
Para mais informações, consulte a documentação Controle de acesso baseado em papéis do Kubernetes.
Leituras recomendadas
Esta seção fornece links para recursos recomendados para saber mais sobre o Kubernetes. Em particular, o Kubernetes.io, o site oficial do Kubernetes, tem material abrangente e confiável sobre tudo relacionado ao Kubernetes.
Guias e tutoriais externos
- Visão geral do Kubernetes: uma visão geral conceitual completa do Kubernetes.
- Tutorial: aprenda os princípios básicos do Kubernetes: aprenda os princípios básicos do Kubernetes com um exemplo.
- Tutoriais do Kubernetes: quando estiver pronto para ir além do básico, esta seção da documentação do Kubernetes oferece tutoriais sobre vários tópicos do Kubernetes, de aplicativos com estado à segurança.
Documentação de referência
- Glossário do Kubernetes: uma lista abrangente e padronizada da terminologia do Kubernetes. Se você não tiver certeza sobre um termo do Kubernetes, consulte o glossário.
A seguir
- Cargas de trabalho do Kubernetes para alta disponibilidade
- Clusters do Kubernetes no GDC
- Cargas de trabalho de contêiner no GDC