Come funziona il bootstrap del cluster EKS Anywhere?

5 minuti di lettura
0

Desidero comprendere il processo di avvio di Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere.

Risoluzione

Il cluster bootstrap

Quando crei un cluster o un cluster di gestione autonomo iniziale, Amazon EKS Anywhere crea anche un cluster bootstrap. Si tratta di un cluster Kubernetes in Docker (KIND) temporaneo a nodo singolo creato su una macchina amministrativa separata per facilitare la creazione del cluster principale.

EKS Anywhere crea un cluster bootstrap sulla macchina amministrativa che ospita gli operatori CAPI e CAPX. Per creare il cluster bootstrap, EKS Anywhere deve completare i seguenti passaggi:

  • Estrarre l'immagine del nodo KinD
  • Preparare il nodo
  • Scrivere la configurazione
  • Avviare il piano di controllo
  • Installare il CNI
  • Installare StorageClass sul cluster a nodo singolo basato su KinD

Creazione di cluster

Quando il cluster bootstrap è in esecuzione e configurato correttamente sulla macchina amministrativa, inizia la creazione del cluster di destinazione. EKS Anywhere utilizza kubectl per applicare una configurazione del cluster di destinazione nel seguente processo:

  1. Dopo che etcd, il piano di controllo (control plane) e i nodi worker sono pronti, il cluster di destinazione riceve la configurazione di rete.

  2. Il cluster di destinazione riceve l'installazione della classe di storage predefinita.

  3. I provider CAPI sono configurati nel cluster di destinazione. Ciò consente al cluster di destinazione di controllare ed eseguire i componenti necessari per la gestione autonoma.

  4. Dopo l'esecuzione di CAPI sul cluster di destinazione, gli oggetti CAPI vengono spostati dal cluster bootstrap al servizio CAPI del cluster di destinazione. Questo avviene internamente con il comando clusterctl.

  5. Il cluster di destinazione riceve i CRD Kubernetes e altri componenti aggiuntivi specifici di EKS Anywhere.

  6. La configurazione del cluster viene salvata.

Il processo di bootstrap crea un file YAML che si trova in CLUSTER_NAME/generated/CLUSTER_NAME-eks-a-cluster.yaml.

Quando il boostrapping ha esito positivo, questo file YAML viene spostato in CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.yaml

Allo stesso modo, Kubeconfig passa da CLUSTER_NAME/generated/CLUSTER_NAME.kind.kubeconfig a CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.kubeconfig.

Quando etcd, il piano di controllo (control plane) e i nodi worker sono pronti, il cluster di carico di lavoro riceve la sua configurazione di rete. Quando il cluster è attivo e il servizio CAPI è in esecuzione sul nuovo cluster, il cluster bootstrap non è più necessario. Quindi, il servizio elimina il cluster bootstrap.

Flussi di lavoro dei pacchetti

Durante il processo di avvio, EKS Anywhere utilizza il seguente log nei suoi flussi di lavoro per la creazione del cluster di destinazione, l'aggiornamento del cluster e l'eliminazione del cluster.

Creazione del cluster

Per il flusso di lavoro completo del pacchetto durante la creazione del cluster, consulta create.go su GitHub. Durante questo flusso di lavoro, EKS Anywhere utilizza il seguente log:

  • Configurazioni e convalide
    Nota: se questo passaggio non riesce, i voli preliminari sono falliti o il registro non è impostato correttamente.
  • Crea un nuovo cluster bootstrap
    Crea un nuovo cluster KinD
    Configurazione pre-installazione specifica del provider sul cluster di bootstrap
    Installa i provider cluster-api sul cluster bootstrap
    Dopo la configurazione specifica del provider
  • Crea un nuovo cluster di carichi di lavoro
    In attesa che l'etcd esterno sia pronto
    Attendi che il piano di controllo (control plane) diventi disponibile
    Attendi la generazione del carico di lavoro kubeconfig
    Installa il collegamento in rete del cluster di carico di lavoro
    Installa i controlli dell'integrità della macchina sul cluster bootstrap
    Attendi che il piano di controllo (control plane) e le macchine worker siano pronti
  • Installa le risorse sulla gestione
  • Installa il task eks-a components
  • Installa il gestore delle operazioni Git
  • Sposta la gestione dei cluster
  • Scrivi ClusterConfig
  • Elimina il cluster bootstrap
  • Installa pacchetti curati

Aggiornamento del cluster

Per il flusso di lavoro completo del pacchetto durante l'aggiornamento del cluster, consulta upgrade.go su GitHub. Durante questo flusso di lavoro, EKS Anywhere utilizza il seguente log:

  • Configurazioni e convalide
  • Aggiorna i segreti
  • Verifica l'esistenza di componenti etcd CAPI
  • Aggiorna i componenti principali
  • Verifica l'aggiornamento necessario
  • Sospendi la riconciliazione eks-a
  • Crea il cluster bootstrap
  • Installa CAPI
  • Sposta la gestione nel cluster bootstrap
  • Sposta la gestione nel cluster del carico di lavoro
  • Aggiorna il cluster di carichi di lavoro
  • Elimina il cluster bootstrap
  • Aggiorna il cluster di carico di lavoro e le risorse Git
  • Riprendi la riconciliazione eks-a
  • Scrivi ClusterConfig

Eliminazione del cluster

Per il flusso di lavoro completo del pacchetto durante l'eliminazione di un cluster, consulta delete.go su GitHub. Durante questo flusso di lavoro, EKS Anywhere utilizza il seguente log:

  • Configurazioni e convalide
  • Crea un cluster di gestione
  • Installa CAPI
  • Sposta la gestione dei cluster
  • Elimina il cluster di carico di lavoro
  • Pulisci il repository Git
  • Elimina le risorse dei pacchetti
  • Elimina il cluster di gestione

Errori durante la creazione del cluster

Se riscontri problemi o errori, cerca i log nella macchina amministrativa e nel capc-controller-manager. Visualizza i log di capc-controller-manager con kubectl nello spazio dei nomi capc-system. Per un'ulteriore risoluzione dei problemi, controlla lo stato degli oggetti CAPI per il tuo cluster, che si trovano nello spazio dei nomi eksa-system.

Potresti anche trovare informazioni correlate sugli errori nei log di altri gestori CAPI, come capi-kubeadm-bootstrap-controller, capi-kubeadm-control-plane-controller e capi-controller-manager. Questi gestori lavorano insieme e puoi localizzarli ciascuno nel proprio namespace con il comando kubectl get pods -A. Per ulteriori informazioni, consulta la guida alla risoluzione dei problemi per EKS Anywhere.

Per uno script per correggere gli errori di linting durante il processo di bootstrap, consulta bootstrapper.go su GitHub.

Informazioni correlate

Avvio rapido di KInD (sul sito web di KInD)

Flusso di lavoro per la creazione di cluster

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa