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á 2 anos