Descobrindo o Kubernetes

Explicação dos conceitos básicos do Kubernetes

Objectives

After completing this lesson, you will be able to:
  • Definir Kubernetes
  • Descrever os desafios que o Kubernetes enfrenta e resolve
  • Listar seis características principais do Kubernetes

Cenário de utilização: conceitos básicos de Kubernetes

Uma empresa opera uma variedade de aplicações em seus próprios sistemas autogerenciados. O problema que eles têm é que eles estão executando uma enorme carga de trabalho de aplicativos sem utilizar eficientemente seus recursos. Eles estão procurando uma solução para gerenciar suas aplicações e recursos de forma mais eficiente em uma plataforma escalável e confiável.

A empresa está considerando o Kubernetes gerenciado pela SAP que oferece o SAP BTP, tempo de execução Kyma como uma solução para o problema. Eles podem seguir esta Learning Journey para saber mais sobre a solução e suas capacidades. Se a equipe optar por adotar Kyma, eles também podem recomendá-la para integrar novos desenvolvedores que se juntam às suas equipes.

O que é Kubernetes?

Antes de explorar o Kyma, vejamos o Kubernetes - a tecnologia subjacente na qual o Kyma é construído. Essencialmente, Kyma é uma coleção de extensões para Kubernetes.

"Kubernetes, também conhecido como K8s, é um sistema de código aberto para automatizar a implantação, a escala e o gerenciamento de aplicativos em contêiner" (Kubernetes.io). O Kubernetes é altamente portátil e pode ser executado em praticamente qualquer lugar, seja em nuvem pública, privada ou no local. Todos os principais provedores de nuvem oferecem o Kubernetes como um serviço gerenciado (Kubernetes as a Service, ou KaaS). O SAP BTP, tempo de execução Kyma é um desses serviços Kubernetes gerenciados.

O Kubernetes foi inicialmente desenvolvido pelo Google em 2014 para lidar com sua enorme carga de trabalho de execução de contêineres em produção e se baseia em muitos anos de experiência na execução interna de cargas de trabalho de produção. Dois anos depois, foi doado para a Cloud Native Computing Foundation (CNCF). A Cloud Native Computing Foundation é uma organização neutra em fornecedores fundada em 2015 para promover o desenvolvimento de tecnologias nativas em nuvem. Este consórcio e seus membros (por exemplo, SAP, Google, IBM, Red Hat, Docker, Microsoft e muito mais) estão trabalhando juntos para definir o futuro das tecnologias nativas em nuvem, como o Kubernetes.

Desafios que o Kubernetes Endereça

Um dos desafios críticos que o Kubernetes enfrenta é o gerenciamento eficiente de cargas de trabalho de aplicativos.

Muitas organizações normalmente têm uma ampla gama de aplicativos em execução em seus servidores de produção - bare metal ou máquinas virtuais. Esses aplicativos são muitas vezes fortemente acoplados à infraestrutura subjacente e não são portáteis em ambientes diferentes (por exemplo, uma instalação de software em um servidor Linux especificamente configurado). Isso dificulta a movimentação de aplicativos de um ambiente para outro, por exemplo, de um ambiente de teste para um ambiente de produção ou de um servidor com falha para um ambiente saudável.

Ao usar contêineres para enviar e operar aplicativos, você pode gerenciar aplicativos de uma forma mais portátil e eficiente. Os containers empacotam aplicativos com todas as suas dependências como uma unidade portátil e executável (imagem de contêiner). A aplicação pode ser enviada e executada em quase qualquer ambiente com um mecanismo ou tempo de execução de container instalado.

Além disso, do ponto de vista econômico, a maioria dos servidores é muitas vezes sobreprovisionada. Consequentemente, as empresas pagam um preço fixo por capacidades alocadas permanentemente (por exemplo, poder de computação, capacidade de armazenamento), que não são totalmente utilizadas. Isso também é comumente referido como custos ociosos ou custos de capacidade não utilizados e é particularmente verdadeiro para cargas de trabalho operacionais de servidores que não são executadas a toda a capacidade em todos os momentos (por exemplo, durante noites ou fins de semana).

Especialmente, se você quiser operar centenas ou até milhares de contêineres em produção simultaneamente, você definitivamente precisa de uma maneira de gerenciá-los de forma eficiente.

No entanto, o gerenciamento eficiente de cargas de trabalho em vários hosts em sua estrutura de TI pode ser desafiador e complexo.

É aí que entra o Kubernetes. O Kubernetes pode gerenciar e orquestrar cargas de trabalho com eficiência, programando-as automaticamente para o host adequado, escalando-as conforme necessário e implementando novas versões de aplicativos.

Por exemplo, com base na alta demanda atual, o Kubernetes pode escalar aplicativos automaticamente horizontalmente (ou seja, adicionando mais instâncias) e equilibrar o tráfego de entrada nessas instâncias. O Kubernetes também pode mover automaticamente aplicativos de um host para outro se o host atual ficar indisponível ou se o host estiver sobreprovisionado. O Kubernetes reproduz o Tetris® com contêineres para garantir que os aplicativos estejam sempre em execução e que estejam sendo executados da maneira mais eficiente possível.

Por essas razões, o Kubernetes também é conhecido como Container Orchestrator.

Recursos do Kubernetes

O Kubernetes tem vários recursos que permitem gerenciar aplicativos em contêineres de maneira escalável e confiável. Entre as características mais importantes estão as seguintes:

Descoberta de serviços e balanceamento de carga

Os containers podem ser expostos usando seu nome DNS ou seu endereço IP. Adotando uma abordagem de balanceamento de carga, o Kubernetes pode distribuir o tráfego de rede para estabilizar a implementação quando o tráfego de contêineres é muito alto.

Orquestração de armazenamento

O armazenamento pode ser integrado automaticamente ao Kubernetes usando um sistema de armazenamento de sua escolha, como armazenamento local, provedores de nuvem pública ou um sistema de armazenamento em rede.

Lançamentos e rollbacks automatizados

O Kubernetes permite que você atualize contêineres usando atualizações contínuas. O Kubernetes inicia novos contêineres e, em seguida, mata os antigos. Esse recurso também garante zero tempo de inatividade durante a implementação. Se algo der errado durante o processo de rollout, o Kubernetes reverte a mudança para você.

Imutabilidade e auto-cura

Tudo no Kubernetes é definido declarativamente. Você especifica o estado desejado de um aplicativo ou infraestrutura, e o Kubernetes sempre garante que o estado atual corresponda ao estado desejado. Quando um contêiner falha, o Kubernetes o reinicia para você. Quando um nó inteiro desce, o Kubernetes move os contêineres para um nó saudável e desliga os contêineres que não respondem às verificações de integridade personalizadas.

Gerenciamento de configuração e segredo

Você pode usar o Kubernetes para armazenar e gerenciar informações confidenciais, como senhas, tokens e chaves SSH. Você pode distribuir e atualizar chaves secretas juntamente com as configurações do aplicativo sem recriar suas imagens de container ou revelar informações confidenciais nos aplicativos.

Nota

Considere que você não deve armazenar suas chaves secretas no seu sistema de controle de versão ou texto fonte. Como alternativa ao Kubernetes Secrets, você também pode usar destinos SAP BTP ou armazenamento de credenciais.
Extensibilidade e ecossistema

A API do Kubernetes vem com um conjunto padrão de implementações e objetos. O Kubernetes geralmente define a API, mas não a implementação concreta. Isso permite que você use e comute entre diferentes implementações do mesmo API. Por exemplo, você pode usar diferentes sistemas de armazenamento para volumes persistentes. Você também pode usar diferentes tempos de execução de container, como Docker, rkt e Rocket. Com o tempo, o ecossistema Kubernetes cresceu para um tamanho onde você pode encontrar uma solução para quase qualquer problema. Por exemplo, existem soluções para registro em log, monitoramento, telas de serviço, entrada e muito mais. Abordaremos alguns deles mais tarde neste curso.

Para obter uma lista completa de todos os recursos do Kubernetes, confira a documentação do Kubernetes.

Síntese

Nesta lição, você descobriu o que o Kubernetes é, quais desafios ele resolve e como ele os resolve. Além disso, agora você pode descrever alguns dos principais recursos do Kubernetes.

Leitura adicional sobre conceitos básicos do Kubernetes

Para mais informações, consulte os seguintes sites: