O Kubernetes é um sistema de código aberto para gerenciar aplicativos em um ambiente de tecnologia de contêiner. O Kubernetes automatiza os processos manuais para implantar e dimensionar aplicativos em contêiner. Ele também pode gerenciar clusters de aplicativos em contêiner, que podem abranger nuvens públicas, privadas e híbridas.

O nome, Kubernetes, é inspirado na analogia do navio porta-contentores, e baseia-se nisso para indicar a palavra grega que se traduz para “timoneiro,” como naquele que precisa pilotar o navio de contêineres. Kubernetes também é chamado “kube” e “k8s” que é um numerônimo, usando a primeira letra, a última letra e o número de letras entre essas letras.

História do Kubernetes

Deixando de lado as etiologias do Word, o Kubernetes foi originalmente criado pelo Google, pois surgiu de um projeto interno, o Borg, com contêineres que impulsionam a tecnologia do Google Cloud. Na verdade, o Google afirma ter experiência com contêineres ao longo de quinze anos e afirma que “gere bilhões de contêineres por semana,” que lhes deu muita experiência que entrou neste programa de software. O Kubernetes foi então doado para a Linux Foundation como uma tecnologia de sementes, para formar a Cloud Native Computing Foundation (CNCF) em 2015.

Embora o Kubernetes seja um projeto de código aberto, ele é oficialmente suportado pelo Microsoft Azure e pelo Google Cloud. Kubernetes ganhou aceitação inicial entre os primeiros adotantes, o que se traduziu em crescimento constante, e agora ocupa uma posição de destaque no espaço de software de gerenciamento de contêineres.

Atualmente, usar vários contêineres para um aplicativo de produção real tornou-se comum, com os contêineres localizados em vários servidores. O software Kubernetes permite a implementação desses contêineres e escalá-los em vários servidores para corresponder à carga de trabalho, incluindo o agendamento dos contêineres em um cluster. Também pode ajudar a gerenciar a integridade desses vários contêineres.

Implantação do Kubernetes

O Kubernetes é implementado para um grupo de contêineres, que é denominado cluster. Um dos contêineres do cluster é designado como o mestre do cluster, que executa os processos do plano de controle do Kubernetes. Os outros contêineres do cluster são designados como nós, que são as máquinas de trabalho, que estão sob o controle do cluster mestre, que funciona como um nó de extremidade unificado.

O mestre de cluster tem controle total de seus nós, designando seu ciclo de vida, incluindo a avaliação de sua integridade, bem como o controle de atualizações e reparos para cada nó. No cluster, pode haver contêineres especiais, que são designados como agentes por nó com funções específicas, por exemplo, coleta de log ou conectividade de rede dentro do cluster.

O padrão para um nó é que ele tenha uma CPU virtual e 3.75GB de RAM, que é o tipo de máquina padrão do Compute Engine. Para mais tarefas de computação intensiva, pode ser escolhida uma plataforma de CPU mínima básica mais alta. Perceba que nem todos os recursos do nó podem ser usados ​​no aplicativo que ele foi projetado para executar. Em vez disso, alguns desses recursos são necessários para executar o Kubernetes Engine. Os recursos alocáveis ​​do nó, que podem ser usados ​​para executar o aplicativo, são a diferença entre o total de recursos e o valor reservado para o Kubernetes Engine..

Por exemplo, se o nó tiver 4 GB de RAM disponíveis, 25% serão reservados para o mecanismo do Kubernetes, e os 75% restantes poderão ser usados ​​para executar o aplicativo, e exigirá apenas 20% dos próximos 4 GB de RAM se o nó tem um total de 8 GB de RAM. O Kubernetes Engine está menos faminto de recursos da CPU, reservando apenas 6% do poder de processamento do primeiro núcleo do nó, e apenas 1% de um segundo núcleo designado ao nó.

O mestre do cluster executa o Kubernetes API Server, que lida com solicitações originadas de chamadas da API do Kubernetes do software Kubernetes. O Kubernetes API Server funciona como o 'hub de comunicação' para todo o cluster de contêiner.

Recursos do Kubernetes

Contribuindo para a popularidade do Kubernetes é seu robusto conjunto de recursos. Esses incluem:

  • Binpack automático: automatiza onde os containers são colocados com base no uso mais eficiente de recursos.
  • Escala horizontal: os aplicativos podem ser ampliados ou reduzidos por meio de um comando simples ou automatizados para corresponder ao uso da CPU.
  • Lançamentos e reversões automatizados: o Kubernetes distribui atualizações para as atualizações nos aplicativos em etapas, em vez de todas de uma vez, e monitora problemas de integridade e, se encontrado, será revertido automaticamente para uma versão mais estável para preservar o tempo de atividade.
  • Orquestração de armazenamento: funciona com uma variedade de soluções de armazenamento para flexibilidade adicional, da nuvem local à pública.
  • Auto-recuperação: a capacidade de eliminar contêineres que congelam e reiniciar contêineres que congelam ou falham em sua verificação de integridade.
  • Descoberta de serviços e balanceamento de carga: o Kubernetes é capaz de atribuir a cada contêiner seu próprio endereço IP, com um nome DNS, e a capacidade de distribuir a carga entre eles..
  • Gerenciamento secreto e de configuração: os aplicativos podem ser atualizados sem uma reconstrução de imagem.
  • Execução em lote: gerenciamento para cargas de trabalho de integração em lote e contínua.

Aplicações do mundo real do Kubernetes

O Kubernetes é usado pelas principais corporações, incluindo a Comcast, o eBay, o Goldman Sachs, o New York Times e o Pokemon Go, entre muitos outros. Um exemplo de uso do Kubernetes é o provedor de vídeos Sling TV, que, após seu lançamento em 2015, teve problemas à medida que novos assinantes superavam seus recursos existentes ao tentar distribuir a TV ao vivo pela Internet. A fim de melhorar a experiência de seus clientes, e com o desejo de maior flexibilidade - por agora e daqui para frente -, foi tomada a decisão de mudar para uma estratégia de nuvem híbrida. Isso usou um data center multi-Vmware no local, integrado com várias nuvens públicas e controlado pelo Kubernetes Engine..

De acordo com Brad Linder, o evangelista nativo de Big Data da TV Sling, “Estamos chegando ao ponto em que podemos clicar com um clique para implantar um data center inteiro - a rede de computação, o registro e o monitoramento de todos os aplicativos.” Ele continua, destacando que a implantação de um novo aplicativo levaria dias, o que agora pode ser realizado em cerca de uma hora por meio do Kubernetes Engine..

Embora o Kubernetes tenha origens humildes como um projeto interno no Google, ele evoluiu para se tornar um player dominante para o software de gerenciamento de contêiner, sem dúvida promovido por sua abordagem de código aberto. O poder e a flexibilidade do Kubernetes Engine explica por que ele é usado em diversos setores.

  • Também discutimos a tecnologia de contêineres com mais detalhes aqui