p Golden Solution | Kubernetes – Entenda esse conceito!

Kubernetes – Entenda esse conceito!.

28/05/2022
Containers para infraestrutura
kubernetes Google
Virtual machine

Kubernetes é uma estrutura de código aberto para gerenciar cargas de trabalho e serviços em contêineres que permite configuração declarativa e automação. Tem um ecossistema enorme e em rápida expansão. Serviços, suporte e ferramentas para Kubernetes estão amplamente disponíveis.

Kubernetes é uma palavra grega que significa “timoneiro” ou “piloto”. A sigla K8s vem da contagem das oito letras entre as letras “K” e “s”. Em 2014, o Google tornou o projeto Kubernetes em código aberto. O Kubernetes combina os 15 anos de experiência do Google executando cargas de trabalho de produção em escala com as melhores ideias e práticas da comunidade.

Voltando ao passado

Kubernetes – Entenda esse conceito!

Tradicional Deployment: As organizações costumavam executar programas em servidores físicos no período de implantação tradicional. Em um servidor físico, não havia mecanismo para definir limites de recursos para aplicativos, o que resultava em problemas de alocação de recursos.

Quando vários aplicativos operam em um servidor físico, por exemplo, pode haver momentos em que um programa consuma a maioria dos recursos, fazendo com que os outros aplicativos tenham desempenho inferior.

Uma alternativa possível é executar cada programa em um servidor físico separado. No entanto, isso não se expandiu, pois os recursos eram subutilizados e a manutenção de um grande número de servidores físicos era cara.

Virtualized Deployment: A virtualização foi introduzida como uma solução na era da implantação virtualizada. Ele permite que você opere várias Máquinas Virtuais (VMs) na CPU de um único servidor físico. A virtualização permite que os programas sejam isolados entre máquinas virtuais (VMs) e fornece um nível de segurança ao impedir que as informações de um aplicativo sejam acessadas livremente por outro.

A virtualização melhora a eficiência dos recursos em um servidor físico, melhora a escalabilidade ao permitir que os aplicativos sejam adicionados ou alterados rapidamente, reduz os custos de hardware e muito mais. Você pode oferecer uma coleção de recursos físicos como um cluster de máquinas virtuais descartáveis ​​usando a virtualização.

Além do hardware virtualizado, cada VM é uma máquina inteira com todos os seus componentes, incluindo seu próprio sistema operacional.

Container Deployment: os contêineres são comparáveis ​​às máquinas virtuais (VMs), mas têm qualidades de isolamento menos rígidas, permitindo que os aplicativos compartilhem o mesmo sistema operacional (SO). Como resultado, os contêineres são considerados leves.

Um contêiner, como uma máquina virtual, tem seu próprio sistema de arquivos, CPU, memória, espaço de processo e outros recursos. Eles são portáteis em nuvens e distribuições de SO porque são isolados da infraestrutura subjacente.

Os contêineres cresceram em popularidade como resultado de seus benefícios adicionais, que incluem:

  • A criação de imagens de contêiner é mais simples e eficiente do que usar imagens de VM para desenvolver e implantar aplicativos ágeis.
  • Desenvolvimento, integração e implantação contínuos: permite a criação e implantação de imagens de contêiner confiáveis ​​e frequentes, bem como reversões rápidas e eficientes (devido à imutabilidade da imagem).
  • Separação de preocupações entre desenvolvimento e operações: produza imagens de contêiner de aplicativos durante a compilação/lançamento em vez de implantação, isolando aplicativos da infraestrutura.
  • Observabilidade: esse recurso expõe não apenas dados e métricas no nível do sistema operacional, mas também a integridade do aplicativo e outros sinais.
  • Consistência do ambiente no desenvolvimento, teste e produção: é executado em um laptop exatamente como na nuvem.
  • Portabilidade de distribuições de nuvem e sistema operacional: Executa no Ubuntu, RHEL, CoreOS, on-premises, nas principais nuvens públicas e em qualquer outro lugar.
  • Gerenciamento centrado em aplicativos: deixa de operar um sistema operacional em hardware virtual e passa a executar um aplicativo em um sistema operacional com recursos lógicos.
  • Microsserviços que são frouxamente vinculados, distribuídos, elásticos e liberados: em vez de uma pilha monolítica operando em uma única grande máquina de propósito único, os aplicativos são divididos em componentes menores e independentes que podem ser implantados e gerenciados dinamicamente.
  • O desempenho do aplicativo é previsível devido à separação de recursos.
  • Alta eficiência e densidade no uso de recursos.

O que o Kubernetes pode realizar e por que você precisa dele?

Os contêineres são um método conveniente para empacotar e executar seus aplicativos. Você deve gerenciar os contêineres que executam os aplicativos em um ambiente de produção e garantir que não haja tempo de inatividade. Por exemplo, se um contêiner falhar, outro deve ser iniciado. Não seria mais conveniente se esse comportamento fosse tratado por um programa de computador?

É aí que o Kubernetes vem a calhar! Kubernetes é uma estrutura para executar sistemas distribuídos de maneira resiliente. Ele lida com dimensionamento e failover para seu aplicativo, além de fornecer padrões de implantação e outros recursos. O Kubernetes possui componentes, por exemplo, que podem gerenciar sem esforço a implantação do seu sistema.

O Kubernetes oferece os seguintes recursos:

  • Balanceamento de carga e descoberta de serviço: O Kubernetes pode expor um contêiner usando seu próprio endereço IP ou seu nome DNS. Se um contêiner recebe muito tráfego, o Kubernetes pode balancear a carga e distribuir o tráfego para manter a implantação estável.
  • Gerenciamento de armazenamento: O Kubernetes permite que você monte qualquer sistema de armazenamento de sua escolha, incluindo armazenamento local, provedores de nuvem pública e muito mais.
  • Rollouts e rollbacks que são automatizados: O Kubernetes permite que você especifique o estado desejado para seus contêineres implantados e, em seguida, altere o estado real para o estado desejado em uma taxa controlada. Você pode usar o Kubernetes para automatizar a criação de novos containers para sua implantação, bem como a remoção dos containers atuais e a adoção de todos os seus recursos para o novo container.
  • A embalagem do bin é feita automaticamente: Você fornece ao Kubernetes um cluster de nós para usar na execução de tarefas em contêiner. O Kubernetes é informado de quanta CPU e memória (RAM) cada contêiner requer. Para aproveitar ao máximo seus recursos, o Kubernetes pode encaixar contêineres em seus nós.
  • Autorrecuperação: reinicia os contêineres com falha, os substitui, destrói os contêineres que não respondem a uma verificação de integridade definida pelo usuário e não os transmite aos clientes até que estejam prontos para o serviço.
  • Gerenciamento de segredos e configurações: Você pode usar o Kubernetes para armazenar e gerenciar dados confidenciais, como senhas, tokens OAuth e chaves SSH. Sem reconstruir suas imagens de contêiner ou expor segredos em suas configurações de pilha, você pode implantar e atualizar segredos e configuração de aplicativos.

O que o Kubernetes não é?

O Kubernetes não é uma solução típica de PaaS (Plataforma como Serviço) tudo-em-um. Como o Kubernetes funciona no nível do contêiner e não no nível do hardware, ele oferece algumas funcionalidades comuns aos provedores de PaaS, como implantação, dimensionamento e balanceamento de carga, bem como a capacidade de incorporar sistemas de registro, monitoramento e alerta.

O Kubernetes, por outro lado, não é um sistema monolítico, e essas soluções padrão são opcionais e conectáveis. O Kubernetes fornece os blocos de construção para a construção de plataformas de desenvolvedor, ao mesmo tempo em que preserva a liberdade e a escolha do usuário.

Kubernetes:

  • Não há restrições sobre os tipos de aplicativos que podem ser usados. O Kubernetes foi projetado para atender a uma ampla variedade de cargas de trabalho, como cargas de trabalho sem estado, com estado e de processamento de dados. Se um aplicativo puder ser executado em um contêiner, ele também poderá ser executado no Kubernetes.
  • Não compila seu aplicativo e não implanta o código-fonte. As culturas e preferências organizacionais, bem como as necessidades tecnológicas, influenciam os fluxos de trabalho de Integração, Entrega e Implantação Contínua (CI/CD).
  • Middleware (por exemplo, barramentos de mensagens), estruturas de processamento de dados (por exemplo, Spark), bancos de dados (por exemplo, MySQL), caches e sistemas de armazenamento de cluster (por exemplo, Ceph) não estão disponíveis como serviços internos. Esses componentes podem ser executados no Kubernetes e/ou acessados ​​por aplicativos baseados em Kubernetes por meio de interfaces portáteis como o Open Service Broker.
  • Não há requisitos para soluções de registro, monitoramento ou alerta. Inclui algumas integrações de prova de conceito, bem como ferramentas de coleta e exportação de métricas.
  • Ele não fornece nem requer uma linguagem ou sistema de configuração (por exemplo, Jsonnet). Ele expõe uma API declarativa que pode ser usada para direcionar qualquer tipo de especificação declarativa.
  • Nenhuma configuração abrangente de máquina, manutenção, administração ou soluções de autocorreção são fornecidas ou adotadas.
  • O Kubernetes também é mais do que apenas um sistema de orquestração. Na verdade, elimina completamente a necessidade de orquestração. A definição técnica de orquestração é a execução de um fluxo de trabalho predeterminado: primeiro faça A, depois B e finalmente C. O Kubernetes, por outro lado, é composto por uma coleção de processos de controle autônomos e compostos que trabalham juntos para orientar continuamente o estado atual para o estado pretendido. Não deve fazer diferença como você vai do ponto A ao ponto C. Também não é necessário ter um controle centralizado. Como resultado, o sistema é mais fácil de usar e poderoso, bem como mais durável, resiliente e expansível.

Leia mais:
Computação em Nuvem: Conceitos e Benefícios
5 Benefícios do Disaster Recovery em Nuvem

Conte com a Golden Solutions para implantar Kubernetes!

A Golden Solutions possui vasta expertise na implantação de Kubernetes utilizando Google Cloud, além de possuir as certificações ISOs 27001, 27017 e 27018, que garantem a excelência que é entrega na prestação do serviço.

Temos um time de especialistas em Google Cloud e fazemos toda a implantação de contaminers na sua opreração.

Entre em contato conosco e conheça melhor nossas soluções.