Métodos de liberação do serviço Kubernetes (versão azul-verde, versão em escala de cinza e versão contínua)


1. Três métodos de liberação de projetos comumente usados

O maior desafio das atualizações de aplicativos é alternar entre serviços antigos e novos, trazendo o software da fase final de teste para o ambiente de produção e, ao mesmo tempo, garantindo que o sistema forneça serviços ininterruptos. Os três métodos de liberação mais comuns são: liberação azul-verde , liberação em escala de cinza e liberação contínua .

O objetivo final dos três métodos de lançamento é reduzir ou evitar o impacto no uso do cliente quando o aplicativo é atualizado e evitar ao máximo a perda de tráfego ou a indisponibilidade do serviço causada pelo lançamento.

1.1 Liberação verde-azulada

Primeiro, divida todos os clusters de serviço de aplicativo em grupos azuis e verdes. Primeiro, remova os clusters do grupo verde do balanceamento de carga e o grupo azul continuará a fornecer serviços aos usuários. Neste momento, o grupo verde removido executa atualizações de serviço e, após a conclusão da atualização, o grupo verde é reconectado ao balanceador de carga para fornecer serviços aos usuários.
Em seguida, remova o grupo azul, atualize o serviço e conecte-o ao cluster com balanceamento de carga após a conclusão da atualização. Neste ponto, todo o cluster do projeto deve ser atualizado, o que chamamos de versão azul-verde.

O projeto é dividido logicamente no grupo AB. No sistema de projeto, o grupo A é primeiro removido do balanceamento de carga e a nova versão é implantada. O Grupo B ainda continua a prestar serviços.
insira a descrição da imagem aqui
Quando o grupo A é atualizado, o balanceador de carga se reconecta ao grupo A e remove o grupo B da lista de carga para implantar a nova versão. O Grupo A retoma o serviço.
insira a descrição da imagem aqui
Finalmente, a atualização do grupo B também é concluída e o balanceamento de carga é reconectado ao grupo B. Neste momento, a versão do grupo AB foi atualizada e fornece serviços para o mundo externo.

Características:

  • Se houver um problema, o escopo de influência é relativamente grande;
  • A estratégia de lançamento é simples;
  • O usuário não tem percepção, transição suave;
  • A atualização/reversão é rápida.

deficiência:

  • É preciso preparar servidores com mais que o dobro dos recursos utilizados por negócios normais para evitar que um único grupo fique impossibilitado de carregar rajadas de negócios durante o período de atualização;
  • Um determinado custo de recurso é desperdiçado em um curto período de tempo;
  • A infraestrutura permanece inalterada, aumentando a estabilidade da atualização.

As versões azul-verde eram relativamente caras nos primeiros dias dos servidores físicos. Devido à popularidade da computação em nuvem, o custo também foi bastante reduzido.

1.2 Versão em escala de cinza (versão Canary)

A liberação em escala de cinza também é chamada de liberação canário. Escala de cinza refere-se a um método de liberação que pode fazer uma transição suave entre preto e branco (por que é chamado de canário? No passado, o absenteísmo e a mineração exigiam uma verificação. Se houver algum gás venenoso abaixo, os mineiros irão primeiro coloque um canário para ver se há algum gás venenoso, para ver se o canário pode sobreviver.)

Este processo é semelhante ao servidor de experiência no jogo. Primeiro, alguns usuários poderão testar o uso. Se não houver problemas, ele será promovido gradualmente para substituir completamente a versão antiga.

A versão em escala de cinza atualiza apenas alguns serviços, ou seja, permite que alguns usuários continuem usando a versão antiga e alguns usuários comecem a usar a nova versão. Se os usuários não tiverem reclamações sobre a nova versão, expanda gradualmente o escopo e migre todos os usuários para o nova versão.
insira a descrição da imagem aqui
características

  • Assegure a estabilidade do sistema geral. Os problemas podem ser encontrados e ajustados na escala de cinza inicial, e o escopo de influência é controlável;
  • A nova função avalia gradualmente o desempenho, a estabilidade e o estado de saúde.Se houver um problema, o escopo do impacto é pequeno e a experiência relativa do usuário é relativamente pequena;
  • O usuário é imperceptível e a transição é suave.

deficiência

  • Altos requisitos de automação

processo de implantação

  • Remova o servidor em escala de cinza do LB e junte-se ao LB após a atualização ser bem-sucedida;
  • Uma pequena quantidade de tráfego de usuários para a nova versão;
  • Se o teste do servidor em escala de cinza for bem-sucedido, atualize os servidores restantes.

A liberação em escala de cinza é um processo de mudança gradual de uma versão para outra, alternando os pesos de roteamento entre as versões coexistentes online.

1.3 Liberação contínua

Rolling release significa que apenas um ou mais serviços são atualizados a cada vez. Após a conclusão da atualização, eles ingressam no ambiente de produção e continuam a executar esse processo até que todas as versões antigas no cluster sejam atualizadas para a nova versão.
insira a descrição da imagem aqui

  • Vermelho: instâncias sendo atualizadas
  • Azul: instâncias que foram atualizadas e se juntaram ao cluster
  • Verde: instância em execução

características

  • O usuário não tem percepção, transição suave;
  • economizar recursos.

deficiência

  • O tempo de implantação é lento, dependendo do tempo de atualização de cada etapa;
  • A estratégia de lançamento é mais complicada;
  • É impossível determinar o ambiente OK e não é fácil reverter.

processo de implantação

  • Atualize uma cópia primeiro, principalmente para verificação de implantação;
  • Toda vez que a cópia é atualizada, ela é removida automaticamente do LB e é incluída automaticamente no cluster após o upgrade bem-sucedido;
  • Precisa haver uma estratégia de atualização automática com antecedência, dividida em várias vezes, cada vez que o número/porcentagem pode ser configurado;
  • A reversão é o processo inverso do lançamento. Primeiro, remova a nova versão do LB e, em seguida, atualize a versão antiga. Esse processo geralmente leva muito tempo;
  • Os requisitos de automação são altos.

2. Atualização do modo canário e experimento de lançamento

Selecione um dos nós do nó para extrair a imagem, uma versão nginx:1.14, uma versão nginx:1.16
insira a descrição da imagem aqui
exporte a imagem e copie- a para outro nó nó
insira a descrição da imagem aqui
Importe a imagem copiada para
insira a descrição da imagem aqui
criar um pod no nó mestre
insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui
e use o método canário para atualizar e liberar

insira a descrição da imagem aqui
Abra outro processo mestre
insira a descrição da imagem aqui
insira a descrição da imagem aqui
e volte para o processo mestre anterior.
insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui
insira a descrição da imagem aqui
Agora um quarto do tráfego é atualizado para nginx: versão 1.16, e todas as atualizações serão feitas sem problemas.

insira a descrição da imagem aqui
Exibir status de atualização em outro processo
insira a descrição da imagem aqui
insira a descrição da imagem aqui

3. Resumo

Resumindo, todos os três métodos podem obter atualizações suaves.Durante o processo de atualização, o serviço ainda mantém a continuidade do serviço e a atualização é insensível ao mundo externo. Qual método de implantação é o mais adequado para produção? Depende de qual abordagem é melhor para suas necessidades comerciais e técnicas. Se a sua reserva de capacidade de automação de operação e manutenção não for suficiente, quanto mais simples melhor, é recomendável liberar em azul e verde.Se o negócio for altamente dependente de usuários, é recomendável liberar em escala de cinza. Se for uma plataforma K8S, a atualização contínua é uma solução pronta e é recomendável usá-la diretamente.

Lançamento azul-verde: os dois ambientes são atualizados alternadamente e a versão antiga é mantida por um determinado período de tempo para facilitar a reversão.

Liberação em escala de cinza: A versão antiga é atualizada de acordo com a proporção, por exemplo, 80% do acesso do usuário é a versão antiga e 20% do acesso do usuário é a nova versão.

Lançamento contínuo: interrompa as instâncias da versão antiga em lotes e inicie as instâncias da nova versão.

Acho que você gosta

Origin blog.csdn.net/ll945608651/article/details/131507220
Recomendado
Clasificación