Este documento descreve os princípios básicos da plataforma de orquestração de contentores de código aberto Kubernetes. Muitos componentes do Google Distributed Cloud (GDC) air-gapped baseiam-se no Kubernetes, e muita da documentação pressupõe que já conhece os conceitos e a terminologia básicos do Kubernetes. Se não tiver experiência com o Kubernetes, use este documento como referência para leitura recomendada para começar.
A aprendizagem dos princípios básicos do Kubernetes é essencial para conceber, implementar e gerir aplicações da GDC e componentes do sistema subjacentes. Os seguintes profissionais técnicos têm de compreender o Kubernetes para operar o GDC com êxito:
- Operadores no grupo de operadores de infraestrutura responsáveis por instalar e manter a infraestrutura de software e hardware do GDC subjacente.
- Administradores no grupo de administradores da plataforma responsáveis por conceber arquiteturas de aplicações e infraestruturas resilientes no GDC.
- Os programadores no grupo de operadores de aplicações responsáveis pela criação de aplicações.
Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.
Acerca do Kubernetes
O Kubernetes é uma plataforma de orquestração de contentores de código aberto. Essencialmente, um cluster do Kubernetes é um conjunto de máquinas de trabalho denominadas nós que executam aplicações em contentores. Todo o cluster é gerido pelo plano de controlo, que inclui componentes como o servidor da API, o programador e a base de dados etcd, e é responsável por manter o estado do cluster.
As aplicações são agrupadas em pods, as mais pequenas unidades implementáveis no Kubernetes, que podem conter um ou mais contentores e ser executadas nos nós. Para organizar recursos num cluster, muitas vezes para diferentes equipas ou ambientes, o Kubernetes usa namespaces.
O ciclo de vida e o estado dos pods são geridos por controladores. Por exemplo, os objetos Deployment gerem as atualizações contínuas e os objetos ReplicaSet garantem que um número específico de réplicas de pods está em execução. Para fornecer pontos finais de rede estáveis, como endereços IP e nomes DNS para aceder a pods, o Kubernetes usa serviços.
Uma vez que o armazenamento de contentores é efémero por predefinição, o Kubernetes oferece várias abstrações de armazenamento, como volumes e volumes persistentes, para gerir dados.
Para proteger o acesso aos recursos do cluster e à API Kubernetes, o Kubernetes usa o controlo de acesso baseado em funções (RBAC) para definir funções, funções de cluster e associações para conceder autorizações específicas a utilizadores e contas de serviço.
Conceitos-chave
Seguem-se alguns conceitos-chave que usamos ao longo da documentação da GDC. Esta não é uma lista exaustiva de conceitos do Kubernetes. Pode encontrar muito mais para ler e explorar 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). Noutras plataformas Kubernetes, um nó pode ser uma máquina física ou virtual. Cada nó é gerido pelo plano de controlo do Kubernetes e tem todos os componentes necessários para executar pods. Um cluster é um conjunto de nós que podem ser tratados em conjunto como uma única entidade, na qual implementa uma aplicação em contentor.
Saiba mais na documentação do Kubernetes:
Painel de controlo do Kubernetes
O plano de controlo do Kubernetes é um conjunto de componentes do sistema que gerem o estado geral do seu cluster, incluindo o servidor da API Kubernetes que lhe permite interagir com os seus clusters e aplicações através da CLI kubectl e de outras ferramentas, um programador para agendar pods em nós disponíveis e os controladores que monitorizam e gerem o estado do cluster. O plano de controlo é fornecido e gerido pelo GDC.
Para mais informações, consulte a documentação dos componentes do plano de controlo do Kubernetes.
Agrupamentos
No Kubernetes, as aplicações contentorizadas são executadas num pod. Um pod é a unidade de computação implementável mais pequena que pode criar e gerir no Kubernetes. Um pod tem um ou mais contentores. Quando um agrupamento executa vários contentores, como um servidor de aplicações e um servidor proxy, os contentores são geridos como uma única entidade e partilham os recursos do agrupamento.
Saiba mais na documentação do Kubernetes:
Espaços de nomes
Os espaços de nomes do Kubernetes oferecem um mecanismo para agrupar e selecionar ainda mais recursos, como pods e serviços, num cluster. Por exemplo, se tiver várias equipas de aplicações a executar cargas de trabalho num único cluster.
Para mais informações, consulte a documentação sobre os namespaces do Kubernetes.
Controladores
Os controladores do Kubernetes monitorizam e gerem o estado dos seus clusters e cargas de trabalho, com base no estado que especificar (por exemplo, "Quero executar três deste pod neste cluster, com este contentor em cada pod"). Os diferentes controladores acompanham diferentes tipos de recursos do Kubernetes, incluindo o seguinte:
Os controladores do Kubernetes monitorizam e gerem o estado dos seus clusters e cargas de trabalho com base no estado que especificar. Por exemplo, pode definir o comportamento de um cluster para apresentar três agrupamentos, com um contentor designado em cada agrupamento. Os diferentes controladores acompanham diferentes tipos de recursos do Kubernetes, incluindo o seguinte:
- Implementação: um
Deploymentrecurso personalizado é um objeto do Kubernetes que representa um ou mais pods idênticos, denominados réplicas. Uma implementação executa várias réplicas dos pods distribuídos entre os nós de um cluster. Uma implementação substitui automaticamente todos os pods que falham ou deixam de responder. - StatefulSet: um recurso personalizado
StatefulSeté como uma implementação, mas mantém uma identidade exclusiva persistente para cada um dos respetivos pods.StatefulSetOs recursos podem ser úteis em aplicações com estado persistente, como aplicações com estado. - DaemonSet: um recurso personalizado
DaemonSetpermite-lhe adicionar pods predefinidos a alguns ou a todos os seus nós. Estes são frequentemente serviços auxiliares para as suas cargas de trabalho, como um daemon de recolha de registos ou um daemon de monitorização. - ReplicaSet: um recurso personalizado
ReplicaSeté um conjunto de pods idênticos. Normalmente, umReplicaSeté gerido como parte de um recursoDeployment.
Saiba mais na documentação do Kubernetes:
Serviço do Kubernetes
Por predefinição, não pode controlar em que nó do cluster um pod está a ser executado, pelo que os pods não têm endereços IP estáveis. Para obter um endereço IP para uma aplicação em execução no Kubernetes, tem de definir uma abstração de rede acima dos respetivos pods denominada Serviço Kubernetes.
Um serviço do Kubernetes fornece um ponto final de rede estável para um conjunto de pods.
Existem vários tipos de serviços, incluindo serviços LoadBalancer, que expõem um endereço IP externo para que possa alcançar aplicações a partir de fora do cluster.
O Kubernetes também tem um sistema DNS incorporado para a resolução de endereços internos, que atribui um nome DNS, como helloserver.default.cluster.local, aos serviços.
Isto permite que os pods no cluster alcancem outros pods no cluster através de um endereço estável. Não pode usar este nome DNS fora do cluster, como a partir da CLI gdcloud.
Para mais informações, consulte a documentação dos serviços do Kubernetes.
Armazenamento
Se as suas aplicações precisarem de guardar dados que existam para além da duração do respetivo pod, como em aplicações com estado, pode usar um objeto PersistentVolume do Kubernetes para aprovisionar este armazenamento. Também pode optar por usar o armazenamento efémero, que é destruído quando o pod correspondente termina.
Saiba mais na documentação do Kubernetes:
Controlo de acesso baseado em funções
O Kubernetes inclui um mecanismo de controlo de acesso baseado em funções (CABF) que lhe permite criar políticas de autorização para aceder aos seus clusters e respetivos recursos. Quando usa o GDC, usa frequentemente uma combinação de RBAC do Kubernetes e Identity and Access Management (IAM) do GDC para proteger as suas aplicações.
Para mais informações, consulte a documentação do Kubernetes sobre o controlo de acesso baseado em funções.
Leitura recomendada
Esta secção fornece links para recursos recomendados para saber mais sobre o Kubernetes. Em particular, Kubernetes.io, o Website oficial do Kubernetes, tem material abrangente e fiável sobre tudo o que está relacionado com o Kubernetes.
Guias e tutoriais externos
- Vista geral do Kubernetes: uma vista geral conceptual detalhada 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 tudo pronto para ir além do básico, esta secção da documentação do Kubernetes oferece tutoriais sobre uma variedade de tópicos do Kubernetes, desde aplicações com estado à segurança.
Documentação de referência
- Glossário do Kubernetes: uma lista abrangente e padronizada da terminologia do Kubernetes. Se não tiver a certeza acerca de um termo do Kubernetes, consulte o glossário.
O que se segue?
- Cargas de trabalho do Kubernetes para HA
- Clusters do Kubernetes no GDC
- Cargas de trabalho de contentores no GDC