Come funziona il bootstrap del cluster EKS Anywhere?
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:
-
Dopo che etcd, il piano di controllo (control plane) e i nodi worker sono pronti, il cluster di destinazione riceve la configurazione di rete.
-
Il cluster di destinazione riceve l'installazione della classe di storage predefinita.
-
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.
-
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.
-
Il cluster di destinazione riceve i CRD Kubernetes e altri componenti aggiuntivi specifici di EKS Anywhere.
-
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)
Contenuto pertinente
- AWS UFFICIALEAggiornata 9 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa