View a markdown version of this page

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 su che si trova 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 le API Kubernetes riconciliando continuamente lo stato desiderato nei tuoi manifest con lo stato effettivo in. 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 ne monitora l'eventuale deriva e aggiorna lo stato di Kubernetes per riflettere lo stato corrente. Questo approccio consente di gestire l'infrastruttura utilizzando strumenti e flussi di lavoro Kubernetes familiari, mantenendo la coerenza tra il cluster e. AWS

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

Guida introduttiva a ACK

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

Ad esempio, crea questo bucket manifest S3 inbucket.yaml, scegliendo il nome univoco del tuo bucket.

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 che ACK gestisce l'intero ciclo di vita delle risorse. AWS

Per ulteriori informazioni su come iniziare con ACK, consulta Getting Started with ACK sul sito Web ACK.

Ciclo di vita e riconciliazione delle risorse

ACK utilizza un ciclo di riconciliazione continuo per garantire che AWS le 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 differiscono, ACK effettua chiamate AWS API per riconciliare la differenza

  4. ACK aggiorna lo stato delle risorse in Kubernetes per riflettere 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 quella di una risorsa esistente o quando ACK rileva spec 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 una riconciliazione immediata, mentre il rilevamento passivo della deriva delle modifiche alle risorse a monte avviene durante la risincronizzazione periodica. AWS

Seguendo 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 ulteriori informazioni su come funziona ACK, vedere ACK Reconciliation sul sito Web ACK.

Condizioni relative allo stato

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

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

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

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

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

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

  • ACK.Advisory: fornisce informazioni di consulenza sulla risorsa.

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

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

  • ACK.IAMRoleSelected: indica se IAMRoleSelector è stato selezionato un per gestire questa risorsa.

Controlla 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")]}'

Stato di esempio:

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 sulle condizioni ACK, vedere Condizioni ACK sul sito Web ACK.

Politiche di eliminazione

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

Elimina (impostazione predefinita)

La AWS risorsa viene eliminata quando si elimina 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 comporta l'eliminazione del bucket S3 in. AWS

Mantenimento

La AWS risorsa viene conservata quando si elimina 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 sopravvivere alla risorsa Kubernetes, alle risorse condivise utilizzate da più applicazioni, alle risorse con dati importanti che non devono essere eliminati accidentalmente o alla gestione temporanea degli ACK in cui si adotta una risorsa, la si configura e la si rilascia nuovamente alla gestione manuale.

Per ulteriori informazioni sulla politica di eliminazione degli ACK, consulta la Politica di eliminazione degli ACK sul sito Web ACK.

Adozione delle risorse

L'adozione consente di sottoporre AWS le risorse esistenti alla gestione ACK senza ricrearle.

Quando utilizzare l'adozione:

  • Migrazione dell'infrastruttura esistente alla gestione ACK

  • Recupero di risorse orfane in caso di eliminazione accidentale delle 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 controlla se esiste un bucket con quel nome 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 base allo stato attuale

  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 eliminerà la risorsa a meno che non si utilizzi la politica AWS di eliminazione. retain

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

Per ulteriori informazioni sull'adozione delle risorse ACK, vedere ACK Resource Adoption sul sito Web ACK.

Cross-account e risorse interregionali

ACK è in grado di gestire risorse in diversi AWS account e regioni da un singolo cluster.

Cross-region annotazioni sulle risorse

È 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 relative allo 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 con un'annotazione a livello di risorsa.

Cross-account

Usa i selettori di ruolo IAM 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 nel namespace mappato utilizzano automaticamente il ruolo specificato.

Per saperne di più sui selettori di ruolo IAM, vedi ACK Resource Management. Cross-Account Per i dettagli sulla configurazione tra più account, consulta. Configurare le autorizzazioni ACK

Gestione degli errori e comportamento dei tentativi

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

Strategia di riprova:

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

  • Il backoff esponenziale impedisce il sovraccarico delle API AWS

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

  • Gli errori permanenti (parametri non validi, conflitti tra i nomi delle risorse) non si riprovano

Controlla lo stato della risorsa per i dettagli degli errori utilizzando: kubectl describe

kubectl describe bucket my-bucket

Cerca le condizioni di stato con i messaggi di errore, gli eventi che mostrano i recenti tentativi di riconciliazione e il message campo nelle condizioni di stato che spiega gli errori. Gli errori più comuni includono autorizzazioni IAM insufficienti, conflitti tra i nomi delle risorse AWS, valori di configurazione non validi e quote di servizio superatespec. 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 sulla creazione di composizioni di risorse personalizzate con risorse ACK, vedi. concetti kro

Fasi successive