Migrar um cluster de administrador para HA

Esta página mostra como migrar para um cluster de administrador de alta disponibilidade (HA) de um cluster de administrador que não é HA na versão 1.29.

1.29: prévia
1.28: indisponível

Antes e depois da migração, o cluster de administrador tem três nós:

  • Um cluster de administrador que não é de HA tem um nó do plano de controle e dois nós de complemento.
  • Um cluster de administrador de alta disponibilidade tem três nós do plano de controle e nenhum nó de complemento, e a disponibilidade é significativamente melhorada.

Prepare-se para a migração

Se a versão do cluster de administrador for 1.29.0-1.29.600 ou 1.30.0-1.30.100 e a criptografia de segredos ativa tiver sido ativada no cluster de administrador na versão 1.14 ou anterior, será necessário girar a chave de criptografia antes de iniciar a migração. Caso contrário, o novo cluster de administrador de HA não vai conseguir descriptografar segredos.

Para verificar se o cluster está usando uma chave de criptografia antiga:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secret -n kube-system admin-master-component-options -o jsonpath='{.data.data}' | base64 -d | grep -oP '"GeneratedKeys":\[.*?\]'

Se a saída mostrar uma chave vazia, como no exemplo a seguir, você precisará girar a chave de criptografia.

"GeneratedKeys":[{"KeyVersion":"1","Key":""}]

Alternar a chave de criptografia, se necessário

Se as etapas na seção anterior mostrarem que você precisa girar a chave de criptografia, siga estas etapas:

  1. Aumente o keyVersion no arquivo de configuração do cluster de administrador.

  2. Atualize o cluster de administrador:

    gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config ADMIN_CLUSTER_CONFIG
    

    Isso cria uma nova chave correspondente ao novo número de versão, criptografa novamente cada secret e apaga o secret antigo com segurança. Todos os novos secrets subsequentes são criptografados com a nova chave de criptografia.

Visão geral do procedimento

A migração envolve estas etapas principais:

  1. Edite o arquivo de configuração do cluster de administrador.

  2. Execute gkectl update admin. Esse comando faz o seguinte:

    • Mostra um cluster externo (Kind) e garante que o cluster de administrador não HA atual esteja em um estado íntegro.

    • Cria um novo plano de controle do cluster de administrador usando a especificação HA e um novo VIP do plano de controle.

    • Desativa o plano de controle do cluster de administrador.

    • Tira um snapshot do etcd do cluster de administrador atual.

    • Restaura os dados antigos do cluster de administrador no novo plano de controle de alta disponibilidade.

    • Reconcilia o cluster de administrador restaurado para atender ao estado final do cluster de administrador de HA.

Observações

  • Durante a migração, não há tempo de inatividade para a carga de trabalho do cluster de usuários.

  • Durante a migração, há um tempo de inatividade para o plano de controle do cluster de administrador. O tempo de inatividade é menor que 18 minutos, com base nos nossos testes, mas a duração real depende dos ambientes de infraestrutura individuais.

  • Os requisitos para clusters de administrador de HA ainda são válidos para a migração de não HA para HA. Por exemplo, os clusters de administrador de HA não são compatíveis com a Seesaw. Portanto, se você estiver usando o balanceador de carga da Seesaw para um cluster de administrador sem HA, primeiro migre para o MetalLB, antes de migrar para um cluster de administrador de HA.

  • Depois que a migração for concluída, os recursos restantes, como a VM mestre de administrador sem HA, serão mantidos intencionalmente para recuperação de falhas.

Antes e depois da migração

A tabela a seguir mostra as principais diferenças no cluster antes e depois da migração:

Antes da migraçãoDepois da migração
Réplicas de nós do plano de controle13
Nós de complemento20
Réplicas de pod do plano de controle
(kube-apiserver, kube-etcd etc.)
13
Tamanho do disco de dados100 GB * 125 GB * 3
Caminho dos discos de dados Definido por vCenter.dataDisk no arquivo de configuração do cluster de administrador Gerado automaticamente no diretório: /anthos/[ADMIN_CLUSTER_NAME]/default/[MACHINE_NAME]-data.vmdk
Balanceador de carga para o VIP do plano de controle Definido por loadBalancer.kind no arquivo de configuração do cluster de administrador keepalived + haproxy
Alocação de endereços IP para nós do plano de controle do cluster de administrador DHCP ou estático, dependendo de network.ipMode.type 3 endereços IP estáticos
Alocação de endereços IP para nós do plano de controle do cluster de usuário do kubeception DHCP ou estático, dependendo de network.ipMode.type DHCP ou estático, dependendo de network.ipMode.type
Arquivo de checkpointAtivado por padrãoNão utilizado

Editar o arquivo de configuração do cluster de administrador

É preciso especificar quatro endereços IP adicionais:

  • Três endereços IP para os nós do plano de controle do cluster de administrador
  • Um novo VIP do plano de controle para o balanceador de carga do cluster de administrador

Você também precisa mudar alguns outros campos no arquivo de configuração do cluster de administrador, conforme descrito nas seções a seguir.

Especificar endereços IP

  1. No arquivo de configuração do cluster de administrador, preencha a seção network.controlPlaneIPBlock. Exemplo:

    controlPlaneIPBlock:
     netmask: "255.255.255.0"
     gateway: "172.16.20.1"
     ips:
     – ip: "172.16.20.50"
       hostname: "admin-cp-node-1"
     – ip: "172.16.20.51"
       hostname: "admin-cp-node-2"
     – ip: "172.16.20.52"
       hostname: "admin-cp-node-3"
    
  2. Preencha a seção hostconfig. Se o cluster de administrador usa endereços IP estáticos, esta seção já está preenchida. Exemplo:

    hostConfig:
     dnsServers:
     – 203.0.113.1
     – 198.51.100.1
     ntpServers:
     – 216.239.35.12
    
  3. Substitua o valor de loadBalancer.vips.controlPlaneVIP por um novo VIP. Exemplo:

    loadBalancer:
     vips:
       controlPlaneVIP: "172.16.20.59"
    

Atualizar outros campos de configuração

  1. Defina adminMaster.replicas como 3:

    adminMaster:
     replicas: 3
     cpus: 4
     memoryMB: 8192
    
  2. Remova o campo vCenter.dataDisk. Para um cluster de administrador de HA, os caminhos dos três discos de dados usados pelos nós do plano de controle são gerados automaticamente no diretório raiz anthos no armazenamento de dados.

  3. Se loadBalancer.manualLB.controlPlaneNodePort tiver um valor diferente de zero, defina-o como 0.

Ajustar a configuração do balanceador de carga manual

Se o cluster de administrador usar o balanceamento de carga manual, siga esta seção. Caso contrário, pule esta seção.

Para cada um dos três novos endereços IP do nó do plano de controle especificados na seção network.controlPlaneIPBlock, configure o seguinte mapeamento no balanceador de carga:

(controlPlaneVIP antigo:443) -> (NEW_NODE_IP_ADDRESS:controlPlaneNodePort antigo)

Esse mapeamento garante que o VIP antigo do plano de controle funcione durante a migração.

Atualizar o cluster de administrador

Revise as mudanças de configuração feitas porque os campos são imutáveis. Depois de confirmar que as mudanças estão corretas, atualize o cluster.

  1. Inicie a migração:

    gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
    

    Substitua:

    • ADMIN_CLUSTER_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador.

    • ADMIN_CLUSTER_CONFIG: é o caminho do arquivo de configuração do cluster de administrador

  2. O comando mostra o progresso da migração.

    Quando solicitado, digite Y para continuar.

  3. Quando a migração for concluída, o arquivo kubeconfig do cluster de administrador será atualizado automaticamente para usar o novo VIP do plano de controle. O VIP do plano de controle mais antigo continua funcionando e também pode ser usado para acessar o novo cluster de administrador de HA.