Estratégia de implementação do Kubernetes
Encontre a estratégia de implementação do Kubernetes ideal para a sua aplicação.
Conheça as opções de implementação do Kubernetes
Quer pretenda encurtar o tempo de comercialização, criar implementações resilientes sem tempo de inatividade, lançar aplicações e funcionalidades mais depressa ou com maior frequência ou trabalhar com mais flexibilidade, é fundamental escolher a estratégia de implementação do Kubernetes certa para proporcionar aplicações e infraestruturas resilientes. Cada estratégia de implementação do Kubernetes tem as suas vantagens, consoante os seus objetivos e necessidades.
Como funcionam as implementações do Kubernetes
Antes de adotar uma estratégia de implementação do Kubernetes, tem de compreender as várias partes em que as implementações consistem e saber como funcionam em conjunto.
O que uma implementação do Kubernetes inclui
Ficheiro Yaml
O estado pretendido para o cluster do Kubernetes - a configuração dos Pods - descrito por si e que funciona como a base de uma implementação do Kubernetes.
Pods
Os contentores, os recursos partilhados e o ambiente de que a aplicação ou o fluxo de trabalho precisa para ser executado.
ReplicaSet
ReplicaSets são grupos de pods configurados de forma idêntica que garantem que o tipo e o número de pods descritos no ficheiro YAML de uma implementação do Kubernetes estão sempre em execução. Se um pod falhar, é criado um novo.
Kube-controller-manager
Altera o estado atual do cluster para que corresponda ao estado pretendido descrito no YAML, criando pods e ReplicaSets novos, bem como atualizando ou removendo já existentes.
Kube-scheduler
Determina como é que os pods e os ReplicaSets são implementados entre os nós de trabalho, para além de distribuir o tráfego para esses nós.
Lançar
O processo de reconfigurar o cluster do estado atual para o estado pretendido; realizado, na maior parte dos casos, sem tempo de inatividade.
Como funcionam as implementações do Kubernetes
- Crie um ficheiro YAML que descreva a configuração de estado pretendido do cluster.
- Aplique o ficheiro YAML ao cluster através de kubectl, a interface de linha de comandos do Kubernetes.
- O Kubectl submete o pedido para o kube-apiserver, o qual autentica e autoriza o pedido antes de registar a alteração numa base de dados, etcd.
- O kube-controller-manager monitoriza continuamente o sistema quanto a pedidos novos e trabalha para reconciliar o estado do sistema para o estado pretendido, criando ReplicaSets, implementações e pods ao longo do processo.
- Após a execução de todos os controladores, o kube-scheduler vê que existem pods no estado "pendente" porque ainda não foram agendados para execução num nó. O agendador encontra nós adequados para os pods e comunica com o kubelet em cada nó para assumir o controlo e iniciar a implementação.
Casos de utilização de implementação do Kubernetes
Criar
Implemente pods e ReplicaSets do Kubernetes completamente novos.
Atualização
Declare um estado pretendido novo e lance os pods e os ReplicaSets novos de forma controlada.
Reverter
Reverta a implementação do Kubernetes para um estado anterior; é útil se o estado atual não for estável.
Dimensionar
Aumente o número de pods e ReplicaSets na implementação do Kubernetes sem os alterar.
Estratégias de implementação do Kubernetes
A melhor estratégia de implementação do Kubernetes para o seu cenário depende de muitos fatores, como quanto tempo de inatividade pode suportar (se é que puder), o ambiente da implementação, a confiança que tem na estabilidade de uma versão ou plataforma nova, se tem de fazer testes, bem como o que espera aprender, os custos e a disponibilidade de recursos e os objetivos empresariais. Seguem-se quatro estratégias de implementação comuns que as organizações utilizam na produção.
Incremental
O método de implementação predefinido do Kubernetes é a implementação transitória. Esta implementação substitui lentamente os pods um de cada vez, para evitar tempos de inatividade. Os pods antigos são reduzidos verticalmente quando os novos estiverem prontos. Se a implementação se deparar com problemas, pode cancelar ou pôr a implementação do Kubernetes em pausa sem colocar todo o cluster offline.
Azul/verde
Numa implementação azul/verde, é lançada uma versão nova (azul) da aplicação ou fluxo de trabalho enquanto a versão atual (verde) ainda está em execução. Desta forma, pode testar a versão azul em produção e expor os utilizadores apenas à versão estável, a verde. Depois de testada, a versão azul substitui gradualmente a verde.
Versão canary
Permita que os clientes testem a sua implementação do Kubernetes ao lançar uma versão nova para um pequeno grupo deles. Executará um ReplicaSet da versão nova juntamente com a versão atual e, depois, após um período de tempo especificado sem erros, aumente verticalmente a versão nova quando remover a antiga.
Testes A/B
À semelhança da estratégia de implementação do Kubernetes com versões canary, a estratégia de testes A/B segmenta um grupo específico de clientes. No entanto, a implementação de um teste A/B procura estabelecer mais do que a estabilidade de uma versão. É utilizada para testar a eficácia da versão na obtenção dos objetivos empresariais. A versão nova é distribuída aos utilizadores com base em fatores como cookies, geolocalização, sistema operativo e tipo de dispositivo e é muitas vezes executada juntamente com a versão atual, aumentado verticalmente à medida que a versão nova prova o seu valor.
Ferramentas de implementação do Kubernetes
Embora possa utilizar a linha de comandos ou os ficheiros YAML para executar qualquer uma destas estratégias de implementação do Kubernetes, tirará mais partido dos clusters e das implementações se implementar estas ferramentas e serviços de implementação do Kubernetes.
Azure DevOps
Uma rede de distribuição de aplicações completa para automatizar implementações do Kubernetes. Equilibre a velocidade e a segurança enquanto entrega código mais depressa em escala.
Helm
Uma ferramenta de pacotes open-source. Instale, atualize e faça a gestão de aplicações Kubernetes com gráficos criados, geridos, partilhados e publicados por si.
Azure Kubernetes Service (AKS)
Um serviço do Kubernetes totalmente gerido, seguro e de elevada disponibilidade. Implemente e faça a gestão de aplicações contentorizadas na cloud.