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 | grepmy-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 | grepmy-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
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:
-
Crei o aggiorni una risorsa personalizzata Kubernetes (ad esempio, un bucket S3)
-
ACK rileva la modifica e confronta lo stato desiderato con lo stato effettivo in AWS
-
Se differiscono, ACK effettua chiamate AWS API per riconciliare la differenza
-
ACK aggiorna lo stato delle risorse in Kubernetes per riflettere lo stato corrente
-
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:
-
Controlla se il bucket esiste in AWS
-
In caso contrario, chiama
s3:CreateBucket -
Aggiorna lo stato di Kubernetes con l'ARN e lo stato del bucket
-
Continua il monitoraggio della deriva
Per ulteriori informazioni su come funziona ACK, vedere ACK Reconciliation
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
AWSResourceReferencecampi 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
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:
-
ACK controlla se esiste un bucket con quel nome AWS
-
Se trovato, ACK lo adotta (nessuna chiamata API da creare)
-
ACK legge la configurazione corrente da AWS
-
ACK aggiorna lo stato di Kubernetes in base allo stato attuale
-
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
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
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
-
Considerazioni ACK per EKS- EKS-specific modelli e strategie di integrazione