Kubernetes illustration
Jump to section

Kubernetes

Copiar URL

Red Hat Summit: Connect

O maior evento sobre open source empresarial a profissionais de TI chega a São Paulo, trazendo a inteligência artificial (IA), nuvem híbrida e automação como suas principais atrações. Sessões interativas sobre cultura aberta, inovação, nuvem híbrida e multicloud.

Esperamos por você, dia 18 de outubro de 2023. Confira também os eventos em outras cidades da América Latina.

O Kubernetes (também conhecido como k8s ou "kube") é 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.

Se você deseja agrupar os hosts executados nos containers Linux®(LXC) em clusters, o Kubernetes ajuda a gerenciá-los de maneira fácil e eficiente e em grande escala.

Clusters Kubernetes podem abranger hosts em nuvens on-premise, públicas, privadas ou híbridas. Por isso, o Kubernetes é a plataforma ideal para hospedar aplicações nativas em nuvem que exigem escalonamento rápido, como a transmissão de dados em tempo real pelo Apache Kafka.

Originalmente, o Kubernetes foi criado e desenvolvido pelos engenheiros do Google. O Google foi um dos pioneiros no desenvolvimento da tecnologia de containers Linux . Além disso, a empresa já revelou publicamente que tudo no Google é executado em containers. Essa é a tecnologia por trás dos serviços de nuvem da empresa.

O Google gera mais de 2 bilhões de implantações de containers por semana, todas viabilizadas pela plataforma interna da empresa, o Borg. Ele foi o antecessor do Kubernetes. As lições aprendidas ao longo dos anos de desenvolvimento do Borg foi a principal influência para o desenvolvimento da tecnologia do Kubernetes.

Uma curiosidade sobre o Kubernetes é que os sete raios do logotipo fazem referência ao nome original do projeto, "Project Seven of Nine" (Projeto Sete de Nove).

A Red Hat foi uma das primeiras empresas a trabalhar com o Google no desenvolvimento do Kubernetes, antes mesmo do lançamento da plataforma. Foi assim que nos tornamos o segundo maior colaborador do projeto upstream para essa tecnologia. Em 2015, o Google doou o projeto Kubernetes à recém-criada Cloud Native Computing Foundation (CNCF).

Quer que o Kubernetes faça parte do seu futuro?

A principal vantagem de usar o Kubernetes no seu ambiente, especialmente se estiver otimizando o desenvolvimento de apps para a nuvem, é que você terá uma plataforma para programar e executar containers em clusters de máquinas virtuais (VMs) ou físicas.

Em termos mais abrangentes, com o Kubernetes, é mais fácil implementar e confiar totalmente em uma infraestrutura baseada em containers para os ambientes de produção. Como o propósito do Kubernetes é automatizar completamente as tarefas operacionais, você faz as mesmas tarefas que outros sistemas de gerenciamento ou plataformas de aplicação permitem, mas para seus containers.

Os desenvolvedores também podem criar apps nativas em nuvem com o Kubernetes como plataforma de ambiente de execução. Para isso, basta usarem os padrões do Kubernetes. Eles são as ferramentas necessárias para desenvolvedores criarem serviços e aplicações baseados em container.

Com o Kubernetes, você pode:

  • Orquestrar containers em vários hosts.
  • Fazer melhor uso do hardware para maximizar os recursos necessários na execução de apps empresariais.
  • Controlar e automatizar atualizações e implantações de aplicações.
  • Ativar e adicionar armazenamento para executar apps stateful.
  • Escalar aplicações em containers e os recursos correspondentes com rapidez.
  • Gerenciar os serviços de maneira assertiva para que a execução das aplicações implantadas ocorra sempre como o esperado.
  • Permitir a autorrecuperação e verificação de integridade das apps ao automatizar o posicionamento, a reinicialização, a replicação e o escalonamento.

No entanto, o Kubernetes depende de outros projetos para oferecer esses serviços orquestrados. Com a inclusão de outros projetos open source, fica claro todo o poder do Kubernetes. Dentre os recursos necessários, podemos citar:

  • Registro, usando projetos como o Docker Registry.
  • Rede, usando projetos como o OpenvSwitch e roteamento da edge.
  • Telemetria, usando projetos como Kibana, Hawkular e Elastic.
  • Segurança, usando projetos como LDAP, SELinux, RBAC e OAUTH com camadas de multilocação.
  • Automação, com a inclusão de Ansible playbooks para gerenciamento de ciclo de vida do cluster e instalação.
  • Serviços, usando um catálogo vasto de padrões de apps conhecidos.

Veja uma introdução aos containers Linux e à tecnologia de orquestração de container. Neste curso sob demanda, você verá como implantar serviços e aplicações em container, testá-los usando o Docker e implantá-los em um cluster Kubernetes usando o Red Hat® OpenShift®.

Como acontece com a maioria das tecnologias, a linguagem específica do Kubernetes pode ser um obstáculo para muitas pessoas. Vamos analisar alguns dos termos mais comuns para ajudar você a entender melhor a plataforma.

Control plane: conjunto de processos que controlam os nós do Kubernetes. É aqui que todas as atribuições de tarefas se originam.

Nós: realizam as tarefas solicitadas que foram atribuídas pelo control plane.

Pod: um grupo de um ou mais containers implantados em um nó. Todos os containers em um pod têm o mesmo endereço IP, IPC, nome de host e outros recursos. Pods abstraem a rede e o armazenamento do container subjacente. Isso facilita a movimentação dos containers pelo cluster.

Controlador de replicações: controla quantas cópias idênticas de um pod devem ser executadas em um determinado local do cluster.

Serviço: desacopla as definições de trabalho dos pods. Os proxies de serviço do Kubernetes recebem as solicitações automaticamente no pod certo, não importa para onde ele vá no cluster nem se ele foi substituído.

Kubelet: este serviço é executado em nós, lê os manifestos do container e inicia e executa os containers definidos.

kubectl: a ferramenta de configuração da linha de comando do Kubernetes.

Kubernetes Cluster diagram

Uma implantação do Kubernetes em funcionamento é chamada de cluster. Ele é dividido em duas partes: o control plane e as máquinas de computação (ou nós).

Cada nó tem o próprio ambiente Linux®, que pode ser físico ou uma máquina virtual. Os nós executam pods, formados por containers.

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. As máquinas de computação executam as aplicações e cargas de trabalho.

O Kubernetes é executado em um sistema operacional, como o Red Hat® Enterprise Linux, e interage com pods de containers executados em nós.

O control plane do Kubernetes aceita os comandos de um administrador (ou equipe de DevOps) e retransmite essas instruções às máquinas de computação.

Essa retransmissão é realizada em conjunto com vários serviços para decidir automaticamente qual nó é o mais adequado para a tarefa. Depois, os recursos são alocados e os pods do nó atribuídos para cumprir a tarefa solicitada.

O estado desejado do cluster do Kubernetes define 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.

Em termos de infraestrutura, o modo de gerenciamento dos containers não é muito diferente. O controle sobre os containers acontece em um nível superior, tornando-o mais refinado, sem a necessidade de microgerenciar cada container ou nó separadamente.

Você só precisa configurar o Kubernetes e definir os nós, os pods e os containers presentes neles. O Kubernetes faz toda a orquestração dos containers.

Você escolhe o ambiente de execução do Kubernetes. Ele pode ser servidores bare-metal, provedores de nuvem pública, máquinas virtuais e nuvens privadas e híbridas. Uma das principais vantagens do Kubernetes é que ele funciona em vários tipos de infraestrutura.

Docker

É possível usar o Docker como um ambiente de execução de container orquestrado pelo Kubernetes. Quando o Kubernetes programa um pod para um nó, o kubelet no nó instrui o Docker a iniciar os containers especificados.

Em seguida, o kubelet coleta o status dos containers do Docker e agrega essa informação no control plane continuamente. O Docker insere os containers nesse nó e os inicia e interrompe normalmente.

A diferença ao usar o Kubernetes com o Docker é que um sistema automatizado solicita que o Docker realize essas tarefas em todos os nós de todos os containers, em vez do administrador efetuar essas solicitações manualmente.

Atualmente, a maioria das implantações on-premises do Kubernetes é executada em uma infraestrutura virtual, com cada vez mais implantações em servidores bare-metal. Isso é uma evolução natural em data centers. O Kubernetes funciona como a ferramenta de gerenciamento do ciclo de vida e da implantação de aplicações em container. Já no gerenciamento de infraestrutura, são usadas ferramentas diferentes. 

Mas suponha que você criou o data center do zero para ser compatível com containers, incluindo a camada de infraestrutura.

Você já começaria com servidores bare-metal e armazenamento definido por software, implantado e gerenciado pelo Kubernetes. Assim, a infraestrutura terá os mesmos benefícios de autoinstalação, autoescalamento e autorrecuperação que um container. Esse é o propósito da infraestrutura nativa do Kubernetes.

Benefícios de uma infraestrutura nativa do Kubernetes

Agilidade da nuvem pública e simplicidade on-premises para reduzir os problemas de desenvolvedores nas operações de TI

Custo-benefício, pois não é necessária uma outra camada de hipervisor para executar as VMs

Flexibilidade de desenvolvimento para implantar containers, aplicações serverless e VMs do Kubernetes, escalando aplicações e infraestruturas

Extensibilidade de nuvem híbrida com o Kubernetes como a camada comum em nuvens públicas e on-premises

Como a Red Hat viabiliza a infraestrutura nativa do Kubernetes?

Red Hat OpenShift

Red Hat OpenShift oferece ferramentas de automação completa de stack com operadores do Kubernetes. Eles são responsáveis por automatizar a instalação e o gerenciamento do ciclo de vida da infraestrutura nativa da plataforma.


Red Hat OpenShift Data Foundation

Red Hat OpenShift Data Foundation oferece armazenamento com provisionamento dinâmico usando o operador dedicado Rook do Kubernetes.


Virtualização nativa em containers


Com a virtualização nativa de containers no Red Hat OpenShift, é possível usar máquinas virtuais no Kubernetes. Ela tem como base o projeto upstream de comunidade open source conhecido como KubeVirt.


Metal3

Metal3 é um projeto upstream criado para o gerenciamento do ciclo de vida e a implantação totalmente automatizada de servidores bare-metal que usam o Kubernetes.

Essa plataforma pode ajudar você a oferecer e gerenciar apps nativas em nuvem, legadas e em containers, além daquelas que estão sendo refatoradas em microsserviços. 

Para atender a novas necessidades empresariais, sua equipe de desenvolvimento precisa ser capaz de desenvolver serviços e aplicações com agilidade. O ponto de partida é usar microsserviços em containers: esse é o segredo para acelerar o desenvolvimento nativo em nuvem e facilitar a transformação e a otimização das aplicações atuais. 

Assista a esta série de webinars para ver as opiniões dos especialistas. Isso ajudará você a estabelecer uma plataforma de dados no Kubernetes empresarial necessária para criar, executar, implantar e modernizar aplicações.

Desenvolvimento de aplicações com o Kubernetes

As apps de produção abrangem vários containers, que devem ser implantados em vários hosts do servidor. O Kubernetes oferece os recursos de orquestração e gerenciamento necessários para implantar containers em escala para essas cargas de trabalho.

Com a capacidade de orquestração do Kubernetes, é possível criar serviços de aplicações que abrangem múltiplos containers, programar o uso desses containers no cluster, escalá-los e gerenciar a integridade deles com o passar do tempo. O Kubernetes permite que você tome medidas para realmente aprimorar a segurança da TI.

Também é necessário integrar a plataforma aos serviços de rede, armazenamento, segurança, telemetria e outros para oferecer uma infraestrutura de containers abrangente.

Kubernetes explained - diagram

Após escalar para um ambiente de produção e várias aplicações, é claro que você precisará de vários containers funcionando juntos para ter os serviços individuais. 

Os containers Linux oferecem às apps baseadas em microsserviços uma unidade de implantação e um ambiente de execução autônomo ideais. Além disso, com os microsserviços em containers, é mais fácil orquestrar serviços, incluindo armazenamento, rede e segurança.

Isso multiplica substancialmente o número de containers no ambiente. À medida que eles se acumulam, a complexidade também aumenta.

O Kubernetes corrige vários problemas comuns que ocorrem com a proliferação de containers, organizando-os em "pods". Os pods adicionam uma camada de abstração aos containers agrupados. Assim, é mais fácil programar as cargas de trabalho e oferecer os serviços necessários a esses containers, como rede e armazenamento. 

Outros componentes do Kubernetes são úteis no balanceamento de carga entre os pods. Com isso, o número de containers em execução será suficiente para oferecer suporte às cargas de trabalho.

Com a implementação correta do Kubernetes e a ajuda de outros projetos open source, como Open vSwitch, OAuth e SELinux, as empresas podem orquestrar todas as partes da infraestrutura de containers.

Caso de uso: criação de uma plataforma na nuvem para oferecer serviços bancários inovadores

A Emirates NBD, um dos maiores bancos nos Emirados Árabes, precisava de uma base escalável e resiliente para promover a inovação digital. Provisionamento lento e um ambiente de TI complexo foram obstáculos para o banco. Configurar um servidor poderia demorar até dois meses e fazer alterações em aplicações grandes e monolíticas poderia levar mais de seis meses.

Com o Red Hat OpenShift Container Platform para gerenciamento, integração e orquestração de container, o banco criou a Sahab, a primeira nuvem privada executada em escala por um banco no Oriente Médio. A Sahab conta com aplicações, sistemas e outros recursos para desenvolvimento de ponta a ponta, desde o provisionamento até a produção, usando um modelo que funciona como um serviço. 

Com a nova plataforma, o Emirates NBD melhorou a colaboração entre suas equipes internas e com parceiros utilizadores de interfaces de programação de aplicações (APIs) e microsserviços. Com a adoção de práticas de desenvolvimento ágil e DevOps, o banco diminuiu os ciclos de atualização e lançamento de apps.

Experimente e conheça todas as vantagens de usar containers.

O desenvolvimento de aplicações modernas exige processos diferentes das abordagens usadas no passado. A metodologia DevOps acelera a trajetória de uma ideia do desenvolvimento à implantação.

Em sua essência, o DevOps depende da automação de tarefas operacionais rotineiras e da padronização dos ambientes envolvidos em todo ciclo de vida das apps. Os containers dão suporte a um ambiente unificado para desenvolvimento, fornecimento e automação, além de facilitar a transição das aplicações entre os ambientes de desenvolvimento, teste e produção.

Um dos principais resultados da implementação do DevOps é o pipeline de integração e implantação contínuas (CI/CD). Com as práticas de CI/CD, é possível disponibilizar aplicações para os clientes com maior frequência e validar a qualidade delas com o mínimo de intervenção humana.

Ao gerenciar o ciclo de vida dos containers com o Kubernetes e adotar uma abordagem de DevOps, você alinha as equipes de operação de TI às de desenvolvimento de software para possibilitar um pipeline de CI/CD.

Com as plataformas certas, tanto dentro quanto fora do container, você aproveita ao máximo as mudanças que implementou na cultura e nos processos.

O Kubernetes é uma plataforma open source. Por isso, ele não conta com uma estrutura de suporte formal em que as empresas podem confiar totalmente. 

Problemas com a implantação do Kubernetes durante a execução no ambiente de produção podem representar uma grande dor de cabeça para você e para sua clientela.

Imagine o Kubernetes como o motor de um carro. Ele pode até funcionar sozinho, mas só teremos um carro se ele estiver conectado à transmissão, aos eixos e às rodas. Da mesma forma, instalar o Kubernetes não é o suficiente para ter uma plataforma a nível de ambiente de produção.

O Kubernetes precisa de outros componentes para ser totalmente funcional. É necessário adicionar autenticação, rede, segurança, monitoramento, gerenciamento de logs e outras ferramentas.

E é aí que entra o Red Hat OpenShift: ele é o carro completo. 

O Red Hat OpenShift é uma solução Kubernetes para empresas. Ele oferece todos os elementos adicionais que tornam o Kubernetes potente e viável para as empresas, incluindo componentes de registro, rede, telemetria, segurança, automação e serviços.

O Kubernetes é uma parte central da plataforma, que é uma solução certificada da CNCF.

Com o Red Hat OpenShift Container Platform, os desenvolvedores podem criar novas apps em containers para hospedá-las e implantá-las na nuvem. Tudo isso com a escalabilidade, o controle e a orquestração necessários para transformar boas ideias em negócios valiosos, de forma rápida e fácil.

Aproveite a avaliação gratuita por 60 dias para testar o Red Hat OpenShift e automatizar suas operações de container.

Leitura recomendada

ARTIGO

Containers x máquinas virtuais

Os containers Linux e as máquinas virtuais são ambientes de computação empacotados que combinam vários componentes de TI e os isolam do restante do sistema.

ARTIGO

O que é orquestração de containers?

A orquestração automatiza a implantação, o gerenciamento, a escala e a rede dos containers.

ARTIGO

O que é um container Linux?

Um container Linux é um conjunto de processos isolados do sistema. Esses processos são executados a partir de uma imagem distinta que oferece todos os arquivos necessários a eles.

Leia mais sobre containers

Soluções Red Hat

Uma plataforma de aplicações para empresas que oferece serviços testados para lançar aplicações na infraestrutura de sua escolha.

Conteúdo adicional

Datasheet

Red Hat OpenShift: tecnologia de container para nuvem híbrida

O Red Hat® OpenShift® é uma plataforma empresarial de containers Kubernetes que ajuda organizações em todo o mundo a criar, implantar, executar, gerenciar e proteger aplicações inovadoras em nuvens híbridas.

Datasheet

Red Hat OpenShift Kubernetes Engine

O Red Hat OpenShift Kubernetes Engine consiste em vários componentes essenciais e totalmente integrados para criação, implantação e gerenciamento de aplicações em containers.

Ebook

Transforme suas aplicações

Conheça as tendências atuais para a transformação de aplicações e como modernizar sua TI usando serviços em nuvem e plataformas de aplicações em nuvem híbrida.

Treinamentos Red Hat

Treinamento gratuito

Running Containers with Red Hat Technical Overview

Treinamento gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures