Visão geral
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.
Originalmente, o Kubernetes foi criado e desenvolvido por engenheiros do Google como parte do projeto Borg, e foi doado para a Cloud Native Computing Foundation (CNCF) em 2015. 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 dessa tecnologia.
O que é um cluster Kubernetes?
Uma implantação ativa do Kubernetes é chamada de cluster, um grupo de hosts que executa containers Linux®. 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, que são 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 control plane aceita 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. Os serviços desacoplam as definições de trabalho dos pods e enviam as solicitações de serviço automaticamente para o pod certo, não importa para onde ele vá no cluster nem se ele foi substituído. Os recursos são alocados e os pods do nó atribuídos para cumprir a tarefa solicitada.
O Kubernetes é executado em um sistema operacional, como o Red Hat Enterprise Linux, e interage com pods de containers executados em nós.
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.
Com o uso desse tipo de infraestrutura, o modo de gerenciamento dos containers não é muito diferente. Sua atuação acontece em um nível superior, tornando-o mais refinado, sem a necessidade de microgerenciar cada container ou nó separadamente.
Você escolhe o ambiente de execução do Kubernetes. Ele pode ser servidores bare-metal, máquinas virtuais (VMs), provedores de nuvem pública, nuvens privadas e híbridas. Uma das principais vantagens do Kubernetes é que ele funciona em vários tipos de infraestrutura.
Descubra com os líderes da Red Hat como os containers revolucionam a nuvem híbrida aberta.
Kubernetes versus Docker
É possível usar oDocker como um runtime de container orquestrado pelo Kubernetes. Quando o Kubernetes programa um pod para um nó, o kubelet (o serviço que garante a execução de cada container) 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 de o administrador fazer essas solicitações manualmente.
Pronto para começar com o Kubernetes? 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®.
Para que o Kubernetes é usado?
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 criar novos 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.
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.
Depois de 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.
Kubernetes com a Red Hat
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 relevantes, de forma rápida e fácil. Se quiser implantar ou mover suas cargas de trabalho do Kubernetes para um serviço de nuvem gerenciado, o OpenShift também está disponível como plataforma Kubernetes nativa em nuvem na Amazon Web Services (AWS), no Microsoft Azure, Google Cloud, IBM Cloud e 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-premise ou de edge computing com eficiência.
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 levou dois meses, e fazer alterações em aplicações grandes e monolíticas levou 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.
Você pode fazer muito mais com os containers.