Como funciona a inicialização do cluster do EKS Anywhere?
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)
Conteúdo relevante
- AWS OFICIALAtualizada há 19 dias
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 2 anos