Kubernetes

Copiar URL

O Kubernetes é uma plataforma de orquestração de containers open source que automatiza grande parte dos processos manuais necessários para implantar, gerenciar e escalar aplicações em containers.

O Kubernetes automatiza a configuração das suas aplicações, além de manter e rastrear a alocação de recursos. Um projeto da Cloud Native Computing Foundation (CNCF), o Kubernetes foi lançado em 2014 e se tornou uma plataforma amplamente utilizada para empresas que executam aplicações distribuídas e serviços em escala.

O Kubernetes é uma plataforma para gerenciamento de containers, que empacotam o código, a configuração e as dependências de uma aplicação para ser executada como um processo isolado, com os próprios recursos. Cada aplicação tem um ou vários containers próprios, agrupados em pods do Kubernetes.

O Kubernetes pode ser executado em servidores bare metal, máquinas virtuais, provedores de nuvem pública, nuvens privadas e ambientes de nuvem híbrida. Uma das principais vantagens do Kubernetes é que ele funciona em vários tipos de infraestrutura.

O Kubernetes foi criado para ajudar os usuários a seguirem os três princípios centrais do design, como explicado nos detalhes de implementação do Kubernetes. Uma implantação Kubernetes é:

  • Segura. Ela segue as práticas recomendadas de segurança mais avançadas.
  • Fácil de usar. Alguns comandos são suficientes para operá-la.
  • Extensível. Ela não favorece um fornecedor específico e pode personalizada por um arquivo de configuração.

Recursos da Red Hat

O Kubernetes automatiza muitas tarefas monótonas da implantação e escala de aplicações, além de abrir caminho para métodos de desenvolvimento nativos em nuvem que economizam tempo e aceleram o lançamento de novos softwares no mercado.  Alguns dos principais benefícios são:

Suporte para ambientes grandes e complexos: um ambiente de produção executando várias aplicações exige muitos containers implantados em diversos hosts, todos funcionando juntos. O Kubernetes oferece os recursos de orquestração e gerenciamento necessários para implantar containers na escala exigida para cargas de trabalho grandes.

Escalabilidade: o Kubernetes faz a escala automática com base nas suas necessidades, oferecendo a capacidade que suas aplicações precisam enquanto economiza custos e recursos.

Portabilidade: o Kubernetes pode ser executado no local no seu próprio data center, em uma nuvem pública ou em configurações híbridas de instâncias públicas e privadas. Com ele, os mesmos comandos podem ser usados em todos os lugares.

Implantações consistentes: as implantações do Kubernetes são consistentes na infraestrutura. Os containers incorporam o conceito de infraestrutura imutável, e todas as dependências e instruções de configuração necessárias para executar uma aplicação são empacotadas com o container.

Operações e desenvolvimento separados e automatizados: os containers economizam tempo para os desenvolvedores com ciclos de iteração rápidos. Ao mesmo tempo, o Kubernets ajuda as equipes operacionais a terem confiança na estabilidade do sistema.

Suporte para estratégia de nuvem híbrida: muitas organizações combinam data centers no local com soluções de nuvem pública ou privada, além de dividirem as cargas de trabalho entre vários provedores de nuvem para aproveitar as mudanças nos preços e níveis de serviço. A consistência e portabilidade do Kubernetes oferecem suporte para essas estratégias híbridas.

Suporte continuado para aplicações tradicionais: o Kubernetes pode ajudar você a entregar e gerenciar aplicações nativas em nuvem, legadas e em containers, além das que estão sendo refatoradas em microsserviços.

Gerenciamento de ambientes complexos: microsserviços em containers facilitam a orquestração de serviços, incluindo armazenamento, rede e segurança, mas também multiplicam consideravelmente o número de containers no seu ambiente, aumentando a complexidade. O Kubernetes agrupa containers em pods, ajudando você a programar as cargas de trabalho e oferecer os serviços necessários a esses containers, como rede e armazenamento.

Segurança melhorada: as práticas de segurança do Kubernetes podem ajudar as empresas a tomar medidas eficazes para melhorar a segurança de TI. Administradores podem aplicar políticas de segurança e governança, segmentando as regras por pods e grupos de pods. Equipes de desenvolvimento conseguem identificar problemas de segurança em containers no runtime e corrigi-los na fase de build, em vez de atualizar ou aplicar patches na produção.O  controle de acesso baseado em função (RBAC) pode atribuir permissões específicas para usuários e contas de serviço. Os segredos do Kubernetes podem proteger dados confidenciais, como chaves de criptografia.

Suporte para DevOps: com uma base de infraestrutura consistente para containers, o Kubernetes oferece suporte para uma abordagem DevOps, que promove um relacionamento de trabalho eficiente entre as equipes de desenvolvimento e operação. Adotar o CI/CD, ou integração e entrega/implantação contínuas, ajuda a otimizar e acelerar o ciclo de vida de desenvolvimento de software. E uma evolução do DevOps, o DevSecOps, altera os controles de segurança e o gerenciamento de vulnerabilidades no início do ciclo de vida de desenvolvimento do software.

E-book: Cultura e prática do DevOps com OpenShift

Uma implantação ativa do Kubernetes é chamada de cluster, um grupo de hosts que executa containers.

Administradores definem o estado desejado de um cluster do Kubernetes, descrevendo quais aplicações ou outras cargas de trabalho serão executadas, as imagens que elas usarão, os recursos disponibilizados para elas e outros detalhes de configuração.

O cluster do Kubernetes pode ser visto em duas partes: um control plane e uma série de nós de computação (normalmente servidores ou servidores virtuais).

O control plane é responsável por manter o estado desejado do cluster. Por exemplo, as aplicações que estão sendo executadas e as imagens de container que elas usam.

Por outro lado, os nós seguem instruções do control plane e de fato executam as aplicações e cargas de trabalho. Cada nó tem o próprio ambiente Linux®, que pode ser físico ou uma máquina virtual. O cluster Kubernetes precisa de pelo menos um nó de computação, mas ele geralmente tem vários.

Um nó do Kubernetes é feito de pods, e cada pod representa uma única instância da aplicação. Um pod é formado por um container ou por vários deles com forte acoplamento, além de opções que determinam como esses containers são executados.

Vários serviços do Kubernetes colaboram entre si para identificar automaticamente qual nó é o mais adequado para cada tarefa, alocar recursos e atribuir os pods desse nó para concluir a tarefa solicitada. O Kubernetes envia solicitações automáticas no pod certo, não importa para onde ele vá no cluster nem se foi substituído.

Mantendo tudo sob controle, o Kubernetes oferece uma interface de programação de aplicações(API) unificada para gerenciar, criar e configurar o cluster. 

Vamos ver melhor o que acontece em um cluster do Kubernetes.

O control plane é o nervo central, lar dos componentes que controlam o cluster e dos dados sobre o estado e a configuração dele. Esses componentes essenciais do Kubernetes asseguram que os containers sejam executados na quantidade suficiente e com os recursos necessários.

API do Kubernetes, ou kube-apiserver, é o front-end do control plane, processando solicitações internas e externas. O servidor da API determina se uma solicitação é válida. Se for, ela a processa. É possível acessar a API por meio de chamadas REST, da interface de linha de comando kubectl ou de outras ferramentas relacionadas, como a kubeadm.

O programador do Kubernetes, ou kube-scheduler, analisa quais os recursos necessários para o pod, como CPU e memória, além de avaliar a integridade do cluster. Depois, ele programa o pod no nó de computação apropriado.

Os controladores, ou kube-controller-manager, ficam encarregados de executar o cluster, enquanto o gerenciador de controladores do Kubernetes executa várias funções relacionadas de maneira unificada. Há um controlador que consulta o programador para se certificar de que o número correto de pods esteja em execução. Se algum pod ficar inativo, outro controlador perceberá e corrigirá esse problema.

etcd é um banco de dados de armazenamento de chave/valor que contém as informações e dados de configuração sobre o estado do cluster. O etcd, distribuído e tolerante a falhas, foi projetado para ser a principal fonte de informações sobre o cluster.

Para executar os containers, cada nó conta com um mecanismo de runtime.Um exemplo é o Docker, mas o Kubernetes é compatível com outros runtimes que estejam em conformidade com a Open Container Initiative, como o rkt e CRI-O.

Todos os nós incluem um kubelet, uma aplicação muito pequena que faz a comunicação com o control plane. O kubelet assegura que os containers estejam em execução em um pod. Quando o control plane precisa que algo aconteça em um nó, o kubelet realiza a ação.

O kube-proxy também está incluído em todos os nós. Ele é um proxy que facilita os serviços de rede do Kubernetes. O kube-proxy gerencia as comunicações de rede dentro e fora do cluster, recorrendo à camada de filtragem de pacotes do sistema operacional ou encaminhando o tráfego por conta própria.

Além de gerenciar os containers que executam a aplicação, o Kubernetes também controla os dados da aplicação anexados ao cluster. Com o Kubernetes, os usuários podem solicitar recursos de armazenamento sem precisar conhecer os detalhes da infraestrutura subjacente. Os volumes persistentes podem ter um ciclo de vida maior do que os pods, já que são específicos para os clusters.

As imagens de container usadas pelo Kubernetes ficam armazenadas em um registro de containers, que pode ser configurado por você ou fornecido por terceiros.

Leia mais sobre a arquitetura do Kubernetes

Serverless é um modelo de desenvolvimento nativo em nuvem para criação e execução de aplicações sem o gerenciamento de servidores. Os servidores ainda são usados nesse modelo, mas eles são abstraídos do desenvolvimento de aplicações. Os desenvolvedores só precisam empacotar o código em containers para fazer a implantação.

Depois da implantação, as aplicações serverless atendem à demanda e aumentam ou diminuem a escala automaticamente de acordo com as necessidades. As soluções serverless dos provedores de nuvem pública costumam ser oferecidas sob demanda por meio de um modelo de execução orientado a eventos. Por isso, não há cobrança pelas funções serverless não utilizadas.

O Kubernetes é uma escolha comum para execução de ambientes serverless. No entanto, ele sozinho não é capaz de executar aplicações serverless de maneira nativa.O Knative é um projeto da comunidade open source que fornece componentes para implantar, executar e gerenciar aplicações serverless no Kubernetes.

Com o Knative, é possível criar um serviço ao empacotar o código como uma imagem de container e enviá-la ao sistema. Seu código só sera executado quando for necessário, com o Knative iniciando e interrompendo instâncias automaticamente.

Leia mais sobre serverless

Um operador Kubernetes é um controlador para aplicações específicas que amplia a funcionalidade da API do Kubernetes para criar, configurar e gerenciar instâncias de aplicações complexas para um usuário do Kubernetes, além de acrescentar outra funcionalidade à aplicação. O operador é baseado nos conceitos básicos de controlador e recursos do Kubernetes. No entanto, ele inclui o conhecimento específico de uma aplicação ou domínio para automatizar o ciclo de vida inteiro do software que gerencia.

Um operador Kubernetes pode ser criado para executar praticamente qualquer ação: escala de uma aplicação complexa, upgrades de versão ou até mesmo o gerenciamento de módulos do kernel para nós em um cluster computacional com hardware especializado. Exemplos de software e ferramentas implantados como operadores Kubernetes incluem o Prometheus Operator para monitoramento e o Elastic Kubernetes Operator para automação de busca.

Aprenda mais sobre os operadores Kubernetes

O Kubernetes é um software open source para implantação, gerenciamento e escala de containers. Sua execução prática dá trabalho. A maioria das organizações quer integrar recursos como automação, monitoramento, analytics de logs, service mesh, serverless e ferramentas de produtividade para desenvolvedores. Outras ferramentas podem ser acrescentadas para ajudar com rede, ingress, balanceamento de carga, armazenamento, monitoramento, geração de logs, gerenciamento de vários clusters e integração e entrega contínuas (CI/CD). Resumindo, na maioria dos casos de uso, o Kubernetes sozinho não é suficiente.

Muitos fornecedores de software oferece suas próprias versões do Kubernetes, incluindo distribuições autogerenciadas, serviços hospedados, instaladores e soluções de Plataforma como Serviço (PaaS). O CNCF tem uma lista com dezenas de ofertas certificadas para Kubernetes.

O Red Hat® OpenShift® é uma oferta Kubernetes certificada pelo CNCF, mas também inclui muito mais coisas. O Red Hat OpenShift usa o Kubernetes como base de uma plataforma completa que entrega aplicações nativas em nuvem de maneira consistente em ambientes de nuvem híbrida.

Com o Kubernetes como mecanismo de orquestração de containers, o Red Hat OpenShift incorpora muito mais funcionalidades do ecossistema open source CNCF, todas testadas, empacotadas e compatíveis com a Red Hat. O Red Hat OpenShift está disponível como um serviço de nuvem pública a partir dos principais provedores de nuvem, como AWS, Microsoft Azure, Google e IBM, ou como um software autogerenciado no amplo espectro de infraestrutura bare metal e virtual no data center, em nuvens públicas e na edge.

Leia uma comparação entre o OpenShift e o Kubernetes

OKD é um projeto da comunidade que inclui um pacote dos componentes de software necessários para executar o Kubernetes. Além do Kubernetes, o OKD oferece ferramentas voltadas aos desenvolvedores e equipes de operações. Com elas, é possível acelerar o desenvolvimento das aplicações, adotar ciclos de vida em longo prazo e ter implantações e escala eficientes. Com o OKD, os desenvolvedores criam, testam e implantam aplicações na nuvem podendo usar diversas linguagens de programação, incluindo Go, Node.js, Ruby, Python, PHP, Perl e Java.

Otimizado para o desenvolvimento e a implantação contínuos de aplicações, o OKD é o projeto upstream do Red Hat OpenShift. Em termos de funcionalidades, ele costuma estar algumas versões à frente do OpenShift. É no OKD que as atualizações da comunidade acontecem primeiro e são testadas para uso empresarial.

A principal diferença entre o OKD e o OpenShift é que o Red Hat OpenShift é validado e testado pela Red Hat, além de vir com os benefícios da subscrição para atender aos requisitos das operações empresariais. Uma subscrição do Red Hat OpenShift inclui suporte técnico, equipes de resposta a incidentes de segurança, opções de suporte de longo prazo, operadores externos validados, middleware e bancos de dados certificados e muito mais.

Leia uma comparação entre o OpenShift e o OKD

A Red Hat é uma empresa líder do setor e participa ativamente do desenvolvimento de tecnologias de containers open source, incluindo o Kubernetes. Criamos ferramentas essenciais para proteger, simplificar e atualizar automaticamente as infraestruturas de container.

Com o Red Hat OpenShift, os desenvolvedores podem criar novas aplicações em containers para hospedá-las e implantá-las na nuvem. Tudo isso com a escala, o controle e a orquestração necessários para transformar boas ideias em negócios vantajosos, de forma rápida e fácil. Se quiser implantar ou migrar suas cargas de trabalho do Kubernetes para um serviço em nuvem gerenciado, o OpenShift também está disponível como serviço nativo em nuvem na Amazon Web Services (AWS), no Microsoft Azure, na Google Cloud, na IBM Cloud e em outros provedores.

Com o OpenShift, você pode usar o Red Hat Advanced Cluster Management e o Red Hat Ansible® Automation Platform juntos para implantar e gerenciar clusters do Kubernetes em ambientes de nuvem pública, on-premises ou na edge computing com eficiência.

Hub

Blog da Red Hat

Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.

Teste as soluções da Red Hat

Você sabia que a Red Hat oferece versões de teste gratuitas de suas soluções? Aproveite e obtenha experiência prática, prepare-se para uma certificação da Red Hat ou avalie na prática se a solução é adequada para ao caso de uso.

Leia mais

What is the Kubernetes Java client?

The Kubernetes Java client is a client library that enables the use of the Java programming language to interface with Kubernetes.

Kubernetes na AWS: comparação entre K8s autogerenciado e plataforma de aplicações gerenciada

Conheça as vantagens de usar o Kubernetes (K8s) na AWS e entenda as diferenças entre o Kubernetes autogerenciado e uma plataforma de aplicações gerenciada.

O que é hosted control plane?

Hosted control plane refere-se ao plano de gerenciamento desacoplado que permite o controle e gerenciamento consolidados dos principais componentes do plano de controle.

Containers: leitura recomendada

Produto em destaque

  • Red Hat OpenShift

    Uma plataforma unificada de desenvolvimento de aplicações que permite desenvolver, modernizar e implantar aplicações em escala na infraestrutura de nuvem híbrida de sua escolha.

Artigos relacionados