Notícias
Notícias do Serverspace: Interface em português e largura de banda ampliada
RP
Rafael Pereira
janeiro 2, 2025
Atualizado dezembro 26, 2024

O que é Kubernetes / K8s?

O que é Kubernetes / K8s?

Nos últimos anos, o método de containerização transformou a forma como as aplicações são implantadas. A containerização permite empacotar aplicações junto com suas dependências em contêineres isolados. Esses contêineres podem ser executados em praticamente qualquer ambiente, seja em um servidor local, plataforma em nuvem ou infraestrutura híbrida.

Para gerenciar contêineres, é amplamente utilizada a plataforma Kubernetes, que automatiza sua implantação, escalabilidade e gerenciamento. O Kubernetes ajuda a reduzir a complexidade desses processos, tornando-os mais previsíveis e acessíveis.

O que é Kubernetes?

Kubernetes (ou K8s) é uma plataforma aberta desenvolvida pelo Google que permite gerenciar aplicações em contêineres em ambientes distribuídos. Ela simplifica o processo de implantação e manutenção de aplicações, fornecendo aos desenvolvedores um conjunto poderoso de ferramentas para trabalhar com contêineres.

Principais benefícios do Kubernetes

  • Automação do gerenciamento de contêineres. O Kubernetes permite iniciar, parar e monitorar contêineres. Ele também ajuda a distribuir a carga de trabalho entre servidores (ou nós) em um cluster, garantindo uma utilização equilibrada.
  • Escalabilidade.
    • Escalabilidade horizontal: aumento ou redução do número de contêineres de acordo com a carga de trabalho.
    • Escalabilidade vertical: ajuste de recursos alocados (CPU, memória) para um contêiner. O Kubernetes realiza essas operações automaticamente, reagindo às condições atuais.
  • Auto-recuperação. Se um contêiner ou servidor falhar, o Kubernetes detecta automaticamente o problema e reinicia os componentes defeituosos. Isso garante alta disponibilidade e estabilidade das aplicações.
  • Abordagem declarativa de gerenciamento. Em vez de executar comandos manuais, os desenvolvedores definem o estado desejado do sistema (por exemplo, "3 réplicas da aplicação em execução"), e o Kubernetes mantém esse estado automaticamente. Isso simplifica o gerenciamento, tornando os processos de implantação mais previsíveis.
  • Suporte a várias infraestruturas. O Kubernetes funciona tanto em ambientes em nuvem quanto em servidores locais. Isso oferece flexibilidade na escolha da plataforma ideal para o seu projeto.

Kubernetes é uma ferramenta poderosa para gerenciar contêineres que simplifica o trabalho de desenvolvedores e engenheiros DevOps. Com automação e flexibilidade, o Kubernetes permite criar sistemas estáveis, escaláveis e de fácil manutenção, independentemente da infraestrutura utilizada.

kubernetes-serverspace

História do Kubernetes

O Kubernetes surgiu a partir da experiência do Google em gerenciar aplicações escaláveis. Em 2003, a empresa desenvolveu o Borg, um sistema interno que automatizava a implantação, escalabilidade e gerenciamento de recursos em toda a infraestrutura do Google.

Em 2014, o Google apresentou o Kubernetes — uma versão aberta do sistema, baseada nos princípios do Borg. A primeira versão pública foi lançada em junho do mesmo ano, e o projeto foi transferido para a Cloud Native Computing Foundation (CNCF).

O Kubernetes rapidamente se tornou o padrão para gerenciar aplicações em contêineres e continua em constante evolução. Hoje, empresas ao redor do mundo o utilizam para gerenciar aplicações tanto na nuvem quanto em infraestruturas locais. A plataforma permanece como uma ferramenta central para DevOps e desenvolvimento de soluções em nuvem, com atualizações frequentes e novos recursos.

Arquitetura do Kubernetes

Kubernetes arc (1)

  1. Master Node (Control Plane Node). O master node é o elemento central do Kubernetes, responsável por executar tarefas administrativas essenciais para gerenciar o cluster. Ele é composto pelos seguintes componentes principais:
    • API Server: fornece uma interface para interagir com o Kubernetes. É através do API Server que todas as solicitações e comandos chegam ao cluster. Por exemplo, ao implantar uma aplicação, o pedido passa pelo API Server.
    • Controllers: garantem que o cluster esteja no estado desejado, controlando processos como a quantidade de réplicas de pods em execução ou a recuperação de nós em caso de falhas.
    • Scheduler: distribui novos pods entre os nodes com base na disponibilidade de recursos e nas políticas de alocação.
    • etcd: um armazenamento distribuído de chave-valor que guarda todas as informações sobre o estado do cluster, incluindo configurações e a localização dos pods.
  2. Nodes. Os nodes são servidores físicos ou virtuais onde os pods são executados. Eles atuam como unidades de trabalho que fornecem os recursos necessários para rodar os contêineres. Em cada node, estão presentes três componentes principais:
    • Kubelet: é o agente que gerencia o ciclo de vida dos pods naquele node. Ele recebe comandos do master node e garante que os contêineres sejam executados corretamente.
    • Kube-proxy: mantém a conectividade de rede entre os pods e realiza o balanceamento de carga, direcionando as solicitações para os serviços apropriados.
    • Container Runtime: a ferramenta que gerencia e executa os contêineres diretamente, como Docker, Containerd ou CRI-O.

    Cada node possui seus próprios recursos computacionais (CPU, memória, armazenamento) e interfaces de rede. Todos os nodes estão conectados ao master node, que coordena sua operação.

  3. Pods. O pod é a menor unidade de implantação no Kubernetes. Dentro de um pod pode haver um ou mais contêineres que compartilham recursos, como rede e armazenamento. Por exemplo:
    • Um pod pode conter um servidor web e um contêiner para coleta de logs.

    Os pods são os blocos de construção fundamentais usados pelo Kubernetes para gerenciar aplicações.

  4. Services. Os serviços são abstrações que fornecem um endereço fixo para acessar um grupo de pods. Mesmo que os pods sejam alterados ou reiniciados, o serviço continua a redirecionar as solicitações para as instâncias disponíveis, garantindo o balanceamento de carga.

  5. Componentes adicionais:
    • Replication Controller: garante que um número definido de pods esteja sempre em execução, restaurando automaticamente instâncias em caso de falhas.
    • Persistent Volumes: oferecem armazenamento permanente, permitindo que os dados sejam preservados mesmo quando os pods são reiniciados ou movidos.
    • ConfigMaps e Secrets: armazenam dados de configuração e informações confidenciais, como senhas e chaves.
    • Ingress Controller: gerencia o tráfego de entrada, roteando solicitações para serviços, como em acessos por nomes de domínio.
    • Namespaces: permitem dividir os recursos do cluster em grupos lógicos, isolando aplicações e usuários.

Para que serve o Kubernetes?

O Kubernetes desempenha funções essenciais no gerenciamento de aplicações em contêineres:

  • Implantação de contêineres e gerenciamento de estado. Permite iniciar, parar e reiniciar contêineres, garantindo que as aplicações estejam sempre operacionais e atualizadas.
  • Escalabilidade de aplicações. Possibilita a execução de vários contêineres em diferentes hosts, aumentando a eficiência no uso de recursos e garantindo a alta disponibilidade.
  • Balanceamento de carga. Kubernetes distribui automaticamente a carga entre os contêineres, otimizando o desempenho. Por meio de sua API, é possível agrupar contêineres, definir pools e alocações eficientes, maximizando o uso dos recursos disponíveis.

Processo de instalação do Kubernetes

O serviço Kubernetes pode ser solicitado na Serverspace, onde você pode selecionar a versão desejada, a localização do cluster e configurar parâmetros como CPU, RAM e número de nós. Na interface de gerenciamento, é possível ativar o Dashboard para facilitar a administração.

Através da interface, você pode criar e excluir clusters, modificar suas configurações e gerenciar os nós. Para tarefas mais avançadas, utiliza-se a linha de comando com ferramentas específicas para trabalhar com clusters.

Uso do kubectl

O kubectl é a principal ferramenta de linha de comando do Kubernetes, que permite:

  • Implantar aplicações;
  • Gerenciar recursos do cluster;
  • Visualizar logs e status dos componentes.

A documentação oficial do Kubernetes oferece uma descrição completa das funcionalidades do kubectl.

Instalação do kubectl no Ubuntu

Execute os seguintes comandos para instalar o kubectl:

sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

Conexão ao cluster Kubernetes

Para se conectar ao cluster, você precisará de um arquivo de configuração contendo dados de autenticação.

Baixe o arquivo de configuração e configure o caminho na variável de ambiente:

export KUBECONFIG=<caminho do arquivo>

Verifique a conexão com o cluster:

kubectl cluster-info

Caso a conexão seja bem-sucedida, você verá a seguinte mensagem:

Kubernetes control plane is running at https://XXX.XXX.XXX.XXX:YYY

Se a conexão falhar, você verá o erro:

The connection to the server was refused - did you specify the right host or port?

Para diagnosticar problemas, use o comando:

kubectl cluster-info dump

Para aprender a trabalhar com o kubectl e as principais operações no Kubernetes, consulte o guia rápido (cheat sheet) oficial disponibilizado pelos desenvolvedores do Kubernetes.

Você também pode gostar...

Usamos cookies para melhorar sua experiência no Serverspace. Ao continuar a navegar em nosso site, você concorda com o Uso de Cookies e com a Política de Privacidade.