O que é um cluster do Kubernetes?
Um cluster Kubernetes (K8s) é um grupo de nós de computação, ou máquinas de trabalho, que executam aplicações em contêineres. A conteinerização é um processo de implantação e runtime de software que agrupa o código de uma aplicação com todos os arquivos e bibliotecas de que ela precisa para ser executado em qualquer infraestrutura. O Kubernetes é um software de orquestração de contêineres de código aberto com o qual você pode gerenciar, coordenar e programar contêineres em grande escala. O Kubernetes coloca contêineres em pods e os executa em nós. Um cluster Kubernetes tem, no mínimo, um nó principal executando um pod de contêiner e um ambiente de gerenciamento que gerencia o cluster. Ao implantar o Kubernetes, você está basicamente executando um cluster Kubernetes.
Quais são os fundamentos do Kubernetes?
Para entender um cluster Kubernetes, primeiro você precisa entender os fundamentos da conteinerização com o Kubernetes.
Um contêiner é uma única aplicação ou microsserviço empacotado com suas dependências, executável como um ambiente independente e uma aplicação em um só. As aplicações modernas adotaram a arquitetura distribuída de microsserviços, na qual cada aplicação inclui centenas ou até milhares de componentes de software distintos que são executados de forma independente. Cada componente (ou microsserviço) executa uma única função independente para aprimorar a modularidade do código. Ao criar contêineres independentes para cada serviço, as aplicações podem ser implantadas e distribuídas em várias máquinas. Você pode escalar ou diminuir workloads de microsserviços individuais e recursos de computação para maximizar a eficiência da aplicação.
O Kubernetes é um software de orquestração de contêineres de código aberto que simplifica o gerenciamento de contêineres em grande escala. Ele pode programar, executar, iniciar e desligar contêineres e automatizar as funções de gerenciamento. Os desenvolvedores obtêm os benefícios da conteinerização em grande escala sem as despesas administrativas.
A seguir, vamos analisar alguns dos principais conceitos do Kubernetes.
Pod
Um pod é a unidade padrão implantável no Kubernetes. Os pods contêm um ou mais contêineres e, dentro do pod, os contêineres compartilham os mesmos recursos do sistema, como armazenamento e rede. Cada pod recebe um endereço IP exclusivo.
Os contêineres dentro de um pod não são isolados. Pense em um pod como semelhante a uma máquina virtual (VM), com contêineres semelhantes às aplicações em execução na VM. Pods e grupos de pods podem ser organizados anexando rótulos de atributos a eles, como rotular 'dev' ou 'prod' para o tipo de ambiente.
Nó
Um nó é uma máquina que executa pods. Ele pode ser um servidor físico ou virtual, como uma instância do Amazon EC2. Os componentes em um nó incluem:
- Kubelet para gerenciamento de nós e contêineres
- Kube-proxy para um proxy de rede
- Runtime (tempo de execução) de um contêiner
Um runtime de contêiner compatível deve ser instalado no nó para executar contêineres. O Kubernetes oferece suporte a vários runtimes de contêineres, como a interface de runtime do contêiner e o contêiner do Kubernetes.
Conjunto e implantação de réplicas
Um pod é um artefato independente e, quando seu nó fica inativo, ele não é reiniciado automaticamente. Se um pod, ou pods, estiver agrupado em um conjunto de réplicas, no Kubernetes, você poderá designar conjuntos de réplicas que sempre estarão em execução nos nós. Isso é essencial para aumentar e reduzir a escala e garantir a continuidade de aplicações e serviços.
Uma implantação é o objeto de gerenciamento do Kubernetes para implantar uma aplicação, bem como atualizar ou reverter a aplicação sem colocá-la off-line.
Serviço e entrada
Use um serviço Kubernetes para expor um pod ou grupo de pods na rede, por meio de um endpoint, para interatividade que segue as regras padrão de comunicação de rede. Para acesso público ao tráfego da Internet, uma entrada do Kubernetes é anexada a um serviço, que então se vincula a um pod ou pods.
Quais são os componentes do cluster Kubernetes?
Um cluster Kubernetes é um grupo de um ou mais nós com pods em execução. Dentro do cluster, o ambiente de gerenciamento do Kubernetes gerencia nós e pods.
Os componentes do ambiente de gerenciamento incluem:
- Servidor de API Kubernetes (kube-apiserver) que gerencia as comunicações dentro e para o cluster
- Armazenamento (etcd) para registrar o estado persistente do cluster
Agendador (kube-scheduler) para gerenciar os recursos do Kubernetes do nó e do pod subsequente
Outros componentes incluem um gerenciador de controlador para controle de nós e tarefas (kube-controller-manager) e um gerenciador de controlador de nuvem para integração com a infraestrutura de nuvem pública específica do provedor (cloud-controller-manager).
Como os contêineres não têm armazenamento persistente, as aplicações precisam armazenar dados que persistam. Os pods também podem exigir acesso a dados compartilhados. Os volumes persistentes podem ser adicionados a um cluster como armazenamento, referenciados dentro do cluster de forma semelhante a um nó.
Como os desenvolvedores trabalham com o cluster Kubernetes?
Os desenvolvedores devem primeiro baixar e instalar o Kubernetes em um nó principal e em seus nós de processamento. Em seguida, eles podem implantar o cluster em máquinas físicas ou virtuais, localmente, em um datacenter ou na nuvem.
Instalação
Para começar de forma simples com as máquinas virtuais Linux, no nó principal escolhido (máquina virtual), instale primeiro:
- Docker ou qualquer outro software de conteinerização.
- Chave do repositório e repositório de código do Kubernetes.
- Pacote kubeadm para inicialização de cluster.
- Pacote kubelet para coordenação de nós.
- Pacote kubectl para a linha de comando do cluster.
Execute o processo em cada um dos outros nós de processamento designados.
Inicialização do cluster
Para inicializar um cluster, execute o comando kubeadm init no nó principal. Você deve adicionar um arquivo de configuração do kube e implantar a rede de pod, normalmente com um arquivo YAML, antes que o cluster esteja pronto para trabalhar. O comando kubeadm init gera um comando join, que pode ser copiado e colado nas linhas de comando de outros nós de processamento da máquina virtual. Isso permite que cada nó de processamento se junte ao cluster.
Trabalhando com o Kubernetes
Com o painel de UI do Kubernetes, os implantadores podem criar e implantar aplicações no cluster. Para um painel de UI do Kubernetes, execute o comando kubectl proxy na máquina mestre. A interface do usuário estará então disponível em http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.
O que é gerenciamento de clusters do Kubernetes?
Gerenciamento de clusters Kubernetes é o termo usado para gerenciar vários clusters Kubernetes em grande escala. Como exemplo, considere um ambiente de desenvolvimento: a equipe pode precisar de clusters de teste, desenvolvimento e produção, cada um executado em várias máquinas físicas e virtuais distribuídas no local e na nuvem.
Para gerenciar vários tipos diferentes de clusters juntos, você precisa ser capaz de realizar operações de cluster, como criação e destruição, atualizações in-situ, manutenção, reconfiguração, segurança, relatórios de dados de cluster e assim por diante. O gerenciamento de vários clusters pode ser obtido por meio de uma combinação de serviços Kubernetes, ferramentas especializadas, configurações e melhores práticas.
Como a AWS pode ajudar com seus requisitos de cluster do Kubernetes?
A AWS fornece serviços em nuvem para configurar, executar e gerenciar seus clusters Kubernetes:
- O Amazon Elastic Compute Cloud (EC2) ajuda você a provisionar e executar o Kubernetes em sua escolha de tipos de instância.
- O Amazon Elastic Kubernetes Service (EKS) ajuda você a iniciar, executar e escalar o Kubernetes, sem precisar provisionar ou gerenciar instâncias principais com um ambiente de gerenciamento e etcd. O EKS vem com ferramentas de gerenciamento de cluster e integrações úteis com serviços de rede e segurança da AWS.
Comece a usar clusters Kubernetes na AWS criando uma conta gratuita hoje mesmo.
Próximas etapas na AWS
Obtenha acesso instantâneo ao nível gratuito da AWS.