Concetti ACK - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Concetti ACK

ACK gestisce AWS le risorse tramite Kubernetes APIs riconciliando continuamente lo stato desiderato nei manifesti con lo stato effettivo in cui si trovano. AWS Quando crei o aggiorni una risorsa personalizzata Kubernetes, ACK effettua le chiamate AWS API necessarie per creare o modificare la AWS risorsa corrispondente, quindi la monitora per rilevare eventuali variazioni e aggiorna lo stato di Kubernetes in modo che rifletta lo stato corrente. Questo approccio consente di gestire l'infrastruttura utilizzando strumenti e flussi di lavoro Kubernetes familiari, mantenendo al contempo la coerenza tra il cluster e. AWS

Questo argomento spiega i concetti fondamentali alla base del modo in cui ACK gestisce AWS le risorse tramite Kubernetes. APIs

Guida introduttiva a ACK

Dopo aver creato la funzionalità ACK (vediCrea una funzionalità ACK), puoi iniziare a gestire AWS le risorse utilizzando i manifest Kubernetes nel tuo cluster.

Ad esempio, crea questo manifesto del bucket S3 in, scegliendo il tuo nome di bucket bucket.yaml univoco.

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-test-bucket namespace: default spec: name: my-unique-bucket-name-12345

Applica il manifesto:

kubectl apply -f bucket.yaml

Controlla lo stato:

kubectl get bucket my-test-bucket kubectl describe bucket my-test-bucket

Verifica che il bucket sia stato creato in AWS:

aws s3 ls | grep my-unique-bucket-name-12345

Elimina la risorsa Kubernetes:

kubectl delete bucket my-test-bucket

Verifica che il bucket sia stato eliminato da: AWS

aws s3 ls | grep my-unique-bucket-name-12345

Il bucket non dovrebbe più apparire nell'elenco, a dimostrazione del fatto che ACK gestisce l'intero ciclo di vita delle risorse. AWS

Per ulteriori informazioni su come iniziare a usare ACK, consulta Getting Started with ACK.

Ciclo di vita delle risorse e riconciliazione

ACK utilizza un ciclo di riconciliazione continuo per garantire che le AWS risorse corrispondano allo stato desiderato definito nei manifesti di Kubernetes.

Come funziona la riconciliazione:

  1. Crei o aggiorni una risorsa personalizzata Kubernetes (ad esempio, un bucket S3)

  2. ACK rileva la modifica e confronta lo stato desiderato con lo stato effettivo in AWS

  3. Se sono diversi, ACK effettua chiamate AWS API per riconciliare la differenza

  4. ACK aggiorna lo stato delle risorse in Kubernetes in modo che rifletta lo stato corrente

  5. Il ciclo si ripete continuamente, in genere ogni poche ore

La riconciliazione viene attivata quando si crea una nuova risorsa Kubernetes, si aggiorna una risorsa esistente o quando ACK rileva una deviazione spec dovuta a modifiche manuali apportate all'esterno di ACK. AWS Inoltre, ACK esegue una riconciliazione periodica con un periodo di risincronizzazione di 10 ore. Le modifiche alle risorse Kubernetes innescano la riconciliazione immediata, mentre il rilevamento passivo della deriva delle modifiche alle risorse upstream avviene durante la risincronizzazione periodica. AWS

Quando si esegue l'esempio introduttivo riportato sopra, ACK esegue questi passaggi:

  1. Controlla se il bucket esiste in AWS

  2. In caso contrario, chiama s3:CreateBucket

  3. Aggiorna lo stato di Kubernetes con l'ARN e lo stato del bucket

  4. Continua il monitoraggio della deriva

Per saperne di più su come funziona ACK, consulta ACK Reconciliation.

Condizioni di status

Le risorse ACK utilizzano le condizioni di stato per comunicare il proprio stato. La comprensione di queste condizioni consente di risolvere i problemi e comprendere lo stato delle risorse.

  • Pronta: indica che la risorsa è pronta per essere consumata (condizione Kubernetes standardizzata).

  • ACK. ResourceSynced: Indica che le specifiche della risorsa corrispondono allo stato della AWS risorsa.

  • ack.Terminal: indica che si è verificato un errore irreversibile.

  • ACK.Adopted: indica che la risorsa è stata adottata da una risorsa esistente anziché creata nuova. AWS

  • ACK.Recoverable: indica un errore recuperabile che può essere risolto senza aggiornare le specifiche.

  • ACK.advisory: fornisce informazioni consultive sulla risorsa.

  • ACK. LateInitialized: Indica se l'inizializzazione tardiva dei campi è completa.

  • ACK. ReferencesResolved: Indica se tutti AWSResourceReference i campi sono stati risolti.

  • ACK. IAMRoleSelezionato: indica se è stato selezionato un IAMRole selettore per gestire questa risorsa.

Verifica lo stato della risorsa:

# Check if resource is ready kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' # Check for terminal errors kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="ACK.Terminal")]}'

Esempio di stato:

status: conditions: - type: Ready status: "True" lastTransitionTime: "2024-01-15T10:30:00Z" - type: ACK.ResourceSynced status: "True" lastTransitionTime: "2024-01-15T10:30:00Z" - type: ACK.Terminal status: "True" ackResourceMetadata: arn: arn:aws:s3:::my-unique-bucket-name ownerAccountID: "111122223333" region: us-west-2

Per ulteriori informazioni sullo stato e le condizioni ACK, consulta le Condizioni ACK.

Politiche di cancellazione

La politica di eliminazione di ACK controlla cosa succede alle AWS risorse quando elimini la risorsa Kubernetes.

Elimina (impostazione predefinita)

La AWS risorsa viene eliminata quando elimini la risorsa Kubernetes: questo è il comportamento predefinito.

# No annotation needed - this is the default apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: temp-bucket spec: name: temporary-bucket

L'eliminazione di questa risorsa elimina il bucket S3. AWS

Mantenimento

La AWS risorsa viene conservata quando elimini la risorsa Kubernetes:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: important-bucket annotations: services.k8s.aws/deletion-policy: "retain" spec: name: production-data-bucket

L'eliminazione di questa risorsa la rimuove da Kubernetes ma lascia il bucket S3 attivo. AWS

La retain policy è utile per i database di produzione che dovrebbero durare più a lungo della risorsa Kubernetes, per le risorse condivise utilizzate da più applicazioni, per le risorse con dati importanti che non devono essere eliminati accidentalmente o per la gestione temporanea di ACK in cui si adotta una risorsa, la si configura e poi la si rimette alla gestione manuale.

Per ulteriori informazioni sulla politica di eliminazione ACK, consulta ACK Deletion Policy.

Adozione delle risorse

L'adozione consente di affidare AWS le risorse esistenti alla gestione ACK senza doverle ricreare.

Quando usare l'adozione:

  • Migrazione dell'infrastruttura esistente alla gestione ACK

  • Ripristino di risorse orfane in caso di eliminazione accidentale di AWS risorse in Kubernetes

  • Importazione di risorse create da altri strumenti (, Terraform) CloudFormation

Come funziona l'adozione:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

Quando crei questa risorsa:

  1. ACK verifica se esiste un bucket con quel nome in AWS

  2. Se trovato, ACK lo adotta (nessuna chiamata API da creare)

  3. ACK legge la configurazione corrente da AWS

  4. ACK aggiorna lo stato di Kubernetes in modo che rifletta lo stato effettivo

  5. Gli aggiornamenti futuri riconciliano normalmente la risorsa

Una volta adottate, le risorse vengono gestite come qualsiasi altra risorsa ACK e l'eliminazione della risorsa Kubernetes comporterà l'eliminazione della risorsa, a meno che non si utilizzi la politica AWS di eliminazione. retain

Quando si adottano risorse, la AWS risorsa deve già esistere e ACK necessita delle autorizzazioni di lettura per scoprirla. La adopt-or-create politica adotta la risorsa se esiste o la crea se non esiste. Ciò è utile quando si desidera un flusso di lavoro dichiarativo che funzioni indipendentemente dall'esistenza o meno della risorsa.

Per ulteriori informazioni sull'adozione delle risorse ACK, consulta ACK Resource Adoption.

Risorse tra account e regioni

ACK può gestire le risorse in diversi AWS account e regioni da un singolo cluster.

Annotazioni di risorse interregionali

È possibile specificare la regione di una AWS risorsa utilizzando un'annotazione:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: eu-bucket annotations: services.k8s.aws/region: eu-west-1 spec: name: my-eu-bucket

Puoi anche specificare la regione di tutte le AWS risorse create in un determinato namespace:

Annotazioni dello spazio dei nomi

Imposta una regione predefinita per tutte le risorse in un namespace:

apiVersion: v1 kind: Namespace metadata: name: production annotations: services.k8s.aws/default-region: us-west-2

Le risorse create in questo namespace utilizzano questa regione a meno che non vengano sovrascritte da un'annotazione a livello di risorsa.

Più account

Usa IAM Role Selectors per mappare ruoli IAM specifici ai namespace:

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: target-account-config spec: arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole namespaceSelector: names: - production

Le risorse create nello spazio dei nomi mappato utilizzano automaticamente il ruolo specificato.

Per ulteriori informazioni sugli IAM Role Selectors, consulta ACK Cross-Account Resource Management. Per i dettagli sulla configurazione tra account, consulta. Configurare le autorizzazioni ACK

Gestione degli errori e comportamento dei nuovi tentativi

ACK gestisce automaticamente gli errori transitori e riprova le operazioni non riuscite.

Strategia di riprova:

  • Gli errori transitori (limitazione della velocità, problemi temporanei di servizio, autorizzazioni insufficienti) attivano nuovi tentativi automatici

  • Il backoff esponenziale impedisce il sovraccarico AWS APIs

  • Il numero massimo di tentativi di riprova varia in base al tipo di errore

  • Gli errori permanenti (parametri non validi, conflitti tra nomi di risorse) non riprovano

Controlla lo stato delle risorse per i dettagli degli errori utilizzando: kubectl describe

kubectl describe bucket my-bucket

Cerca le condizioni di stato con messaggi di errore, gli eventi che mostrano i recenti tentativi di riconciliazione e il message campo nelle condizioni di stato che spiegano gli errori. Gli errori più comuni includono autorizzazioni IAM insufficienti, conflitti tra i nomi delle risorse, valori di configurazione non validi nelle AWS quote di servizio e il spec superamento delle quote di servizio. AWS

Per la risoluzione degli errori più comuni, consulta. Risolvi i problemi relativi alle funzionalità ACK

Composizione delle risorse con kro

Per comporre e connettere più risorse ACK insieme, usa EKS Capability for kro (Kube Resource Orchestrator). kro fornisce un modo dichiarativo per definire gruppi di risorse, passando la configurazione tra le risorse per gestire semplicemente modelli di infrastruttura complessi.

Per esempi dettagliati di creazione di composizioni di risorse personalizzate con risorse ACK, vedi concetti kro

Fasi successive