A operação de centenas de milhares de contêineres em um sistema pode se tornar incontrolável e exige uma solução de gerenciamento de orquestração.
É aí que entra a orquestração de contêineres, permitindo que as empresas gerenciem grandes volumes ao longo do seu estilo de vida, fornecendo:
- Fornecimento
- Redundância
- Monitoramento do funcionamento
- Alocação de recursos
- Dimensionamento e balanceamento de carga
- Movimentação entre hosts físicos
Embora existam outras plataformas de orquestração de contêiner (por exemplo, Apache Mesos, Nomad, Docker Swarm), o Kubernetes tornou-se o padrão do setor.
A arquitetura Kubernetes consiste na execução de clusters que permitem que os contêineres sejam executados em várias máquinas e ambientes. Cada cluster normalmente consiste em nós de trabalho, que executam as aplicações em contêineres, e nós do plano de controle, que controlam o cluster. O plano de controle atua como orquestrador do cluster Kubernetes. Ele inclui vários componentes: o servidor de API (gerencia todas as interações com o Kubernetes), o gerenciador de controle (lida com todos os processos de controle), o gerenciador do controlador de nuvem (a interface com a API do provedor de nuvem) e assim por diante. Os nós de trabalho executam contêineres usando tempos de execução de contêiner como o Docker. Os pods, as menores unidades implementáveis em um cluster, armazenam um ou mais contêineres de aplicações e compartilham recursos, como informações de armazenamento e de rede.
O Kubernetes permite que desenvolvedores e operadores declarem o estado desejado do ambiente geral do contêiner por meio de arquivos YAML. Em seguida, o Kubernetes faz todo o trabalho de processamento para estabelecer e manter esse estado, com atividades que incluem a implementação de um número específico de instâncias de uma determinada aplicação ou carga de trabalho, reinicialização dessa aplicação caso ela falhe, balanceamento de carga, escalonamento automático, implementações com downtime zero e muito mais. A orquestração de contêineres com o Kubernetes também é crucial para a integração e entrega contínuas (CI/CD) ou o pipeline de DevOps, o que seria impossível sem automação.
Em 2015, o Google doou o Kubernetes à Cloud Native Computing Foundation (CNCF)8, o hub de computação nativa da nuvem de código aberto e neutro em relação a fornecedores operado sob os auspícios da Linux Foundation. Desde então, a Kubernetes tornou-se a ferramenta de orquestração de contêiner mais usada para executar cargas de trabalho baseadas em contêiner em todo o mundo. Em um relatório da CNCF9, a Kubernetes é o segundo maior projeto de código aberto do mundo (depois do Linux) e a principal ferramenta de orquestração de contêineres de 71% das empresas da Fortune 100.