DEVOPS, Container e Kubernetes

Se você quer hospedar aplicações nativas em nuvem que exigem escalabilidade rápida, o Kubernetes é a plataforma ideal. Com transmissão de dados em tempo real por meio do Apache Kafka, esses clusters podem incluir hosts em nuvem pública, nuvem privada ou nuvem híbrida.

Criado e desenvolvido pelos engenheiros do Google, o Kubernetes trouxe o pioneirismo da empresa no desenvolvimento da tecnologia de containers Linux. Além disso, a empresa já revelou publicamente que tudo no Google é executado em containers (inclusive, essa é a tecnologia por trás dos serviços em cloud da empresa).

O Kubernetes é uma tecnologia 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 os seus clientes.

Para isso, existem soluções de nível corporativo que oferecem todos os elementos extras que tornam o Kubernetes potente e viável para as empresas, incluindo componentes de registro, rede, telemetria, segurança, automação e serviços.

Assim, os desenvolvedores da sua empresa poderão criar novas aplicações em containers, hospedá-las e implantá-las na cloud. 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.

Por que o Kubernetes é essencial?

Aplicações de produção abrangem múltiplos containers. Eles devem ser implantados em vários hosts do servidor. A segurança dos containers tem várias camadas e pode ser complexa. É aí que o Kubernetes entra em cena. Ele oferece os recursos de orquestração e gerenciamento necessários para implantar containers em escala para essas cargas de trabalho.

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

Também é necessário integrar o Kubernetes com os serviços de rede, armazenamento, segurança, telemetria e outros para oferecer uma infraestrutura de containers global.

Diagrama Kubernetes

No entanto, isso obviamente depende do uso que cada empresa faz dos containers em seus próprios ambientes. Uma aplicação rudimentar dos containers Linux os trata como máquinas virtuais rápidas e eficientes.

Quando escalado para um ambiente de produção e diversas aplicações, fica claro que é necessário ter vários containers alocados funcionando em conjunto para disponibilizar serviços individuais. 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 fornecer 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, é possível garantir que o número de containers em execução seja suficiente para oferecer suporte às cargas de trabalho.

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

Como o Kubernetes funciona e para que serve?

A principal vantagem que as empresas garantem ao usar o Kubernetes, especialmente se estiverem otimizando o desenvolvimento de aplicações para a cloud, é que elas terão uma plataforma para programar e executar containers em clusters de máquinas físicas ou virtuais.

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, ele permite que os containers realizem muitas das tarefas possibilitadas por outros sistemas de gerenciamento ou plataformas de aplicações.

O Kubernetes possibilita:

  • Orquestrar containers em vários hosts;
  • Aproveitar melhor o hardware para maximizar os recursos necessários na execução das aplicações corporativas;
  • Controlar e automatizar as implantações e atualizações de aplicações;
  • Montar e adicionar armazenamento para executar aplicações com monitoração de estado;
  • Escalar rapidamente as aplicações em containers e recursos relacionados;
  • Gerenciar serviços de forma declarativa, garantindo que as aplicações sejam executadas sempre da mesma maneira como foram implantadas;
  • Verificar a integridade e auto recuperação das aplicações com posicionamento, reinício, replicação e escalonamento automáticos.

No entanto, o Kubernetes depende de outros projetos para oferecer plenamente esses serviços orquestrados. Com a inclusão de outros projetos open source, é possível atingir a capacidade total do Kubernetes. Dentre esses projetos necessários, incluem-se:

  • Registro, como o Atomic Registry ou o Docker Registry;
  • Rede, como o OpenvSwitch e roteamento de borda inteligente;
  • Telemetria, como o heapster, o kibana, o hawkular e o elastic;
  • Segurança, como o LDAP, o SELinux, o RBAC e o OAUTH com camadas de multilocação;
  • Automação, com a adição de playbooks do Ansible para a instalação e o gerenciamento do ciclo de vida do cluster;
  • Serviços, oferecidos em um catálogo variado de conteúdos previamente criados de padrões de aplicações populares;
  • Faça uma avaliação gratuita do Red Hat OpenShift.

Aprenda a linguagem do Kubernetes

Assim como qualquer tecnologia, há vários termos específicos que podem representar uma barreira inicial. Vamos explicar alguns dos termos mais comuns para ajudar você a entender melhor o Kubernetes.

  • Master: a máquina que controla os nós do Kubernetes. É nela que todas as atribuições de tarefas se originam.
  • Nó: são máquinas que realizam as tarefas solicitadas e atribuídas. A máquina mestre do Kubernetes controla os nós.
  • Pod: um grupo de um ou mais containers implantados em um único nó. Todos os containers em um pod compartilham o mesmo endereço IP, IPC, nome do host e outros recursos. Os pods separam 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 automaticamente levam as solicitações de serviço para o pod correto, independentemente do local do pod no cluster ou se foi substituído.
  • Kubelet: um serviço executado nos nós que lê os manifestos do container e garante que os containers definidos foram iniciados e estão em execução.
  • Kubectl: a ferramenta de configuração da linha de comando do Kubernetes.

Uso do Kubernetes em produção

O Kubernetes é uma tecnologia 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 os seus clientes.

Para isso, existe o Red Hat OpenShift. Essa é uma solução de nível corporativo que oferece o Kubernetes e muito mais. O OpenShift vem com todos os elementos extras que tornam o Kubernetes potente e viável para as empresas, incluindo componentes de registro, rede, telemetria, segurança, automação e serviços.

Com o Red Hat OpenShift, os desenvolvedores da sua empresa poderão criar novas aplicações em containers, hospedá-las e implantá-las na cloud. 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.

Além disso, a maior vantagem dessa solução é que essa plataforma foi desenvolvida e conta com o suporte da Red Hat, a empresa líder global em tecnologia open source.

Veja como o Kubernetes se encaixa na sua infraestrutura

O Kubernetes é executado em um sistema operacional (por exemplo, no Red Hat Enterprise Linux Container Host) e interage com pods de containers executados em nós. A máquina mestre do Kubernetes aceita os comandos de um administrador (ou equipe de DevOps) e retransmite essas instruções aos nós subservientes.

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

Portanto, do ponto de vista da infraestrutura, são poucas as mudanças em comparação com a forma como você já gerencia os containers. 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. Será necessário realizar algum trabalho, mas em sua maioria trata-se somente de uma questão de atribuir um master do Kubernetes e definir os nós e pods.

E quanto ao docker?

A tecnologia do docker ainda realiza as mesmas tarefas do seu objetivo original. Quando o Kubernetes programa um pod para um nó, o kubelet no nó instruirá o docker a iniciar os containers especificados. O kubelet, então, continuamente coleta do docker os status desses containers e agrega as informações no master.

O docker insere os containers nesse nó e os inicia e interrompe normalmente. A diferença é que um sistema automatizado solicita que o Docker realize essas tarefas em todos os nós de todos os containers, em vez do administrador fazer essas solicitações manualmente.

Menu