O que é Kubernetes e sua história?

O que é Kubernetes e sua história?

O Kubernetes é uma plataforma de código aberto, portátil e extensível para gerenciamento de cargas de trabalho distribuídas e serviços em contêineres, facilitando a configuração declarativa e a automação. Possui um ecossistema grande e em rápido crescimento. Os serviços, suporte e ferramentas do Kubernetes estão amplamente disponíveis.

 O Google transformou o Kubernetes em um projeto de código aberto em 2014. O Kubernetes combina mais de 15 anos de experiência do Google no gerenciamento de cargas de trabalho produtivas em escala com as melhores ideias e práticas da comunidade.

O nome Kubernetes vem da Grécia e significa motorista ou piloto. K8s é uma abreviação obtida substituindo as oito letras “ubernetes” por “8”, tornando-se K”8″.

Com o artigo, podemos entender a história e o que é kubernetes e sua história!

Voltando no tempo: porque o Kubernetes é tão útil para voltar no tempo

A Era da Implantação Tradicional

No início, as organizações executavam aplicativos em servidores físicos. Os aplicativos no mesmo servidor físico não podiam ter limites de recursos alocados, causando problemas de alocação de recursos. Veja sobre a era da implantação virtualizada!

Era da implantação virtualizada

A virtualização foi introduzida como uma solução. Esse design permite que você execute várias máquinas virtuais (VMs) em uma única CPU de um servidor físico. A virtualização permite que aplicativos sejam isolados entre máquinas virtuais e ainda fornece um certo nível de segurança porque outros aplicativos não podem acessar livremente os dados de um aplicativo. A virtualização permite representar uma coleção de recursos físicos como um conjunto de máquinas virtuais descartáveis. Cada VM é uma máquina completa com todos os componentes, incluindo seu próprio sistema operacional, exceto o hardware virtualizado. Veja mais sobre a era da implantação dos contêineres!

A Era da Implantação de Contêineres

Contêineres são semelhantes a máquinas virtuais, mas com menos recursos de isolamento para compartilhamento entre aplicativos de sistema operacional (SO). É por isso que os tanques são considerados leves. Como uma VM, um contêiner tem seu próprio sistema de arquivos, alocação de CPU, memória, espaço de processo e muito mais. Por serem separados da infraestrutura subjacente, eles são portáteis entre nuvens e distribuições de sistema operacional. Os contêineres tornaram-se populares porque oferecem benefícios adicionais, como:

  • Criação e implantação de aplicativos ágeis: criar uma imagem de contêiner é mais fácil e eficiente do que usar uma imagem VM.
  • Desenvolvimento, Integração e Implantação Contínuos: Fornece a capacidade de criar e implantar imagens de contêiner de forma confiável e frequente e realizar reversões rápidas e eficientes (devido à imutabilidade da imagem).
  • Separação de problemas entre desenvolvimento e operações: crie contêineres de aplicativos durante a construção/lançamento em vez da implantação e separe os aplicativos da infraestrutura.
  • A observabilidade mostra não apenas informações e métricas no nível do sistema operacional, mas também aplicativos e outros sinais.
  • Continuidade do ambiente entre desenvolvimento, teste e produção: funciona tanto no laptop quanto na nuvem.
  • Distribuição em nuvem e portabilidade do sistema operacional: Funciona no Ubuntu, RHEL, CoreOS, no local, grandes nuvens públicas e em qualquer outro lugar.
  • Gerenciamento centrado em aplicativos: aumenta o nível de abstração da execução de um sistema operacional em hardware virtualizado para a execução de um aplicativo usando recursos lógicos no sistema operacional.
  • Microsserviços livremente acoplados, distribuídos, flexíveis e gratuitos: os aplicativos são divididos em partes independentes menores e podem ser implantados e gerenciados dinamicamente – não uma pilha monolítica em execução em uma grande máquina descartável.
  • Alocação de recursos: previsão do desempenho do aplicativo.
  • Utilização de recursos: alta eficiência e densidade.

Por que o Kubernetes é necessário e o que ele pode fazer?

Os contêineres são uma ótima maneira de agrupar e executar aplicativos. Em um ambiente de produção, você precisa gerenciar os contêineres que executam seus aplicativos e garantir que não haja tempo de inatividade. Por exemplo, se um contêiner falhar, outro contêiner deverá ser iniciado.

O Kubernetes fornece uma estrutura para uso flexível de sistemas distribuídos. Ele lida com escalabilidade e tolerância a falhas de seu aplicativo, fornece padrões de implantação e muito mais. Por exemplo, o Kubernetes pode gerenciar facilmente a implantação Canary do seu sistema. Entenda mais sobre o que o kubernetes oferece!

O Kubernetes oferece:

Descoberta de serviço e balanceamento de carga

O Kubernetes pode descobrir um contêiner usando seu nome DNS ou endereço IP. Quando há muito tráfego para o contêiner, o Kubernetes pode balancear a carga e distribuir o tráfego de rede para que a implantação seja estável.

Orquestração de armazenamento

O Kubernetes permite que você orquestre automaticamente o sistema de armazenamento de sua escolha, como repositórios locais, provedores de nuvem pública e muito mais.

Reversões e lançamentos automáticos

Você pode usar o Kubernetes para descrever o estado desejado de contêineres implantados e alterar o estado real para o estado desejado em uma taxa controlada.

Empacotamento binário automático

Você fornece ao Kubernetes um conjunto de nós que ele pode usar para executar tarefas em contêineres. Você diz ao Kubernetes quanta CPU e memória (RAM) cada contêiner precisa. O Kubernetes pode encaixar contêineres em seus nós para fazer o melhor uso de seus recursos.

Autocorreção

O Kubernetes reinicia os contêineres com falha, substitui os contêineres, elimina os contêineres que falham nas verificações de integridade definidas pelo usuário e  os anuncia aos clientes até que estejam prontos para servir.

Configuração e gerenciamento de segredo

O Kubernetes permite que você armazene e gerencie informações confidenciais, como senhas, credenciais OAuth e chaves SSH. Você pode implantar e atualizar os segredos e as configurações do aplicativo sem reconstruir as imagens do contêiner e expor os segredos na pilha de configuração.

Veja abaixo o que o kubernetes não é!

O que o Kubernetes não é?

O Kubernetes não é um sistema PaaS completo. Como o Kubernetes opera no contêiner em vez de no nível do hardware, ele fornece alguns recursos geralmente utilizáveis ​​comuns às ofertas de PaaS, como implantação, dimensionamento, balanceamento de carga e permite que os usuários integrem registro, monitoramento e alerta. No entanto, o Kubernetes não é monolítico e essas soluções padrão são opcionais e conectáveis. O Kubernetes fornece os blocos de construção para a criação de plataformas de desenvolvimento, mas preserva a escolha e a flexibilidade do usuário onde é importante.

  • Não limita os tipos de aplicativos suportados.
  • Não implantará o código-fonte ou criará seu aplicativo.
  • Não fornece serviços integrados em nível de aplicativo
  • Não dita soluções de gravação, monitoramento ou alarme.
  • Não fornece ou requer um sistema/idioma de configuração (por exemplo, Jsonnet).
  • Não fornece ou implementa sistemas abrangentes de configuração, manutenção, gerenciamento ou autocorreção da máquina.

Agora você já sabe o que é o kibernetes!