Como funciona a inicialização do cluster do EKS Anywhere?

5 minuto de leitura
0

Quero entender o processo de inicialização do Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere.

Resolução

O cluster de bootstrap

Quando você cria um cluster autônomo inicial ou um cluster de gerenciamento, o Amazon EKS Anywhere também cria um cluster de bootstrap. Esse é um cluster temporário de Kubernetes de nó único no Docker (KiND) criado em uma Máquina administrativa separada para facilitar a criação do cluster principal.

O EKS Anywhere cria um cluster de bootstrap na máquina administrativa que hospeda operadores CAPI e CAPX. Para criar o cluster de bootstrap, o EKS Anywhere deve concluir as seguintes etapas:

  • Extrair a imagem do nó KInD
  • Preparar o nó
  • Escrever a configuração
  • Iniciar o plano de controle
  • Instalar o CNI
  • Instalar o StorageClass no cluster de nó único baseado em KinD

Criação de clusters

Quando o cluster de bootstrap está em execução e configurado corretamente na máquina administrativa, a criação do cluster de destino começa. O EKS Anywhere usa o kubectl para aplicar uma configuração de cluster de destino no seguinte processo:

1.Depois que o etcd, o plano de controle e os nós de processamento estiverem prontos, o cluster de destino receberá sua configuração de rede.

2.O cluster de destino recebe a instalação de classe de armazenamento padrão.

3.Os provedores de CAPI são configurados no cluster de destino. Isso permite que o cluster de destino controle e execute os componentes necessários para se gerenciar sozinho.

4.Depois que o CAPI é executado no cluster de destino, os objetos do CAPI são movidos do cluster de bootstrap para o serviço CAPI do cluster de destino. Isso acontece internamente com o comando clusterctl.

5.O cluster de destino recebe CRDs do Kubernetes e outros complementos específicos do EKS Anywhere.

6.A configuração do cluster foi salva.

O processo de inicialização cria um arquivo YAML localizado em CLUSTER_NAME/generated/CLUSTER_NAME-eks-a-cluster.yaml.

Quando a inicialização é bem-sucedida, esse arquivo YAML é movido para CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.yaml

Da mesma forma, o Kubeconfig passa de CLUSTER_NAME/generated/CLUSTER_NAME.kind.kubeconfig para CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.kubeconfig.

Quando o etcd, o plano de controle e os nós de processamento estiverem prontos, o cluster de carga de trabalho receberá sua configuração de rede. Quando o cluster estiver ativo e o serviço CAPI estiver em execução no novo cluster, o cluster bootstrap não será mais necessário. Em seguida, o serviço exclui o cluster de bootstrap.

Fluxos de trabalho de pacotes

Durante o processo de inicialização, o EKS Anywhere usa a seguinte lógica em seus fluxos de trabalho para a criação, atualização e exclusão do cluster de destino.

Criação de clusters

Para ver o fluxo de trabalho completo do pacote durante a criação do cluster, consulte create.go no GitHub. Durante esse fluxo de trabalho, o EKS Anywhere usa a seguinte lógica:

  • Configurações e validações
    Observação: se essa etapa falhar, as prévias falharam ou o registro não está configurado corretamente.
  • Crie um novo cluster de bootstrap
    Crie um novo cluster do KinD
    Configuração specific pre-capi-install-setup específica do provedor no cluster de bootstrap
    Instale provedores cluster-api no cluster de bootstrap
    Pós-configuração específica do provedor
  • Crie um novo cluster de carga de trabalho
    Espere o ETCD externo ficar pronto
    Espere o plano de controle ficar disponível
    Aguarde a geração do kubeconfig da carga de trabalho
    Instale a rede no cluster de carga de trabalho
    Instale verificações de integridade da máquina no cluster de bootstrap
    Aguarde até que o plano de controle e as máquinas de trabalho estejam prontos
  • Instale recursos no gerenciamento
  • Instale a tarefa de componentes eks-a
  • Instale o gerenciador de operações do Git
  • Mova o gerenciamento de clusters
  • Escreva ClusterConfig
  • Exclua o cluster de bootstrap
  • Instale pacotes selecionados

Atualização do cluster

Para ver o fluxo de trabalho completo do pacote durante uma atualização de cluster, consulte upgrade.go no GitHub. Durante esse fluxo de trabalho, o EKS Anywhere usa a seguinte lógica:

  • Configurações e validações
  • Atualize segredos
  • Verifique se os componentes etcd CAPI existem
  • Atualize os componentes principais
  • Verifique a atualização necessária
  • Pause a reconciliação eks-a
  • Crie o cluster de bootstrap
  • Instale o CAPI
  • Mova o gerenciamento para o cluster de bootstrap
  • Mova o gerenciamento para o cluster de carga de trabalho
  • Atualize o cluster de carga de trabalho
  • Exclua o cluster de bootstrap
  • Atualize o cluster de carga de trabalho e os recursos do Git
  • Retome a reconciliação eks-a
  • Escreva ClusterConfig

Exclusão de cluster

Para ver o fluxo de trabalho completo do pacote durante a exclusão de um cluster, consulte delete.go no GitHub. Durante esse fluxo de trabalho, o EKS Anywhere usa a seguinte lógica:

  • Configurações e validações
  • Crie um cluster de gerenciamento
  • Instale o CAPI
  • Mova o gerenciamento de clusters
  • Exclua o cluster de carga de trabalho
  • Limpe o repositório do Git
  • Exclua recursos do pacote
  • Exclua o cluster de gerenciamento

Erros durante a criação do cluster

Se você encontrar problemas ou erros, procure logs na máquina administrativa e no capc-controller-manager. Veja os registros do capc-controller-manager com kubectl no namespace capc-system. Para obter mais soluções de problemas, verifique o status dos objetos CAPI do seu cluster, localizados no namespace eksa-system.

Você também pode encontrar informações relacionadas sobre erros nos logs de outros gerenciadores de CAPI, como capi-kubeadm-bootstrap-controller, capi-kubeadm-control-plane-controller e capi-controller-manager. Esses gerenciadores trabalham juntos, e você pode localizar cada um em seu próprio namespace com o comando kubectl get pods-A. Para obter mais informações, consulte o Guia de solução de problemas do EKS Anywhere.

Para ver um script para corrigir erros de linting durante o processo de inicialização, consulte bootstrapper.go no GitHub.

Informações relacionadas

Início rápido do KinD (no site do KinD)

Fluxo de trabalho de criação de cluster

AWS OFICIAL
AWS OFICIALAtualizada há um ano