View a markdown version of this page

Risolvi i problemi relativi alle funzionalità 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à.

Risolvi i problemi relativi alle funzionalità ACK

Nota

Le funzionalità EKS sono completamente gestite ed eseguite all'esterno del cluster. Non hai accesso diretto ai namespace dei controller. È possibile configurare la distribuzione dei log del controller per la visibilità del comportamento del controller. Consulta Accedi ai registri del controller EKS Capabilities. La risoluzione dei problemi si concentra sullo stato delle funzionalità, sullo stato delle risorse e sulla configurazione IAM.

La funzionalità è ATTIVA ma le risorse non vengono create

Se la tua funzionalità ACK mostra ACTIVE lo stato ma le risorse non vengono create in AWS, controlla lo stato della funzionalità, lo stato delle risorse e le autorizzazioni IAM.

Verifica lo stato della funzionalità:

È possibile visualizzare i problemi relativi all'integrità e allo stato delle funzionalità nella console EKS o utilizzando la AWS CLI.

Console:

  1. Apri la console Amazon EKS all'indirizzo https://console.aws.amazon.com/eks/home #/clusters.

  2. Seleziona il nome del cluster.

  3. Scegli la scheda Osservabilità.

  4. Scegli Monitora cluster.

  5. Scegli la scheda Funzionalità per visualizzare lo stato e lo stato di tutte le funzionalità.

AWS CLI:

# View capability status and health aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-ack # Look for issues in the health section

Cause comuni:

  • Autorizzazioni IAM mancanti: al Capability Role mancano le autorizzazioni per il servizio AWS

  • Namespace errato: risorse create nello spazio dei nomi senza che siano appropriate IAMRoleSelector

  • Specifica della risorsa non valida: verifica la presenza di errori di convalida nelle condizioni di stato delle risorse

  • Limitazione delle API: AWS i limiti di velocità delle API sono stati raggiunti

  • Webhook di ammissione: webhook di ammissione che impediscono al controller di applicare patch allo stato delle risorse

Controlla lo stato delle risorse:

# Describe the resource to see conditions and events kubectl describe bucket my-bucket -n default # Look for status conditions kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}' # View resource events kubectl get events --field-selector involvedObject.name=my-bucket -n default

Verifica le autorizzazioni IAM:

# View the Capability Role's policies aws iam list-attached-role-policies --role-name my-ack-capability-role aws iam list-role-policies --role-name my-ack-capability-role # Get specific policy details aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name

Risorse create in AWS ma non viene visualizzato in Kubernetes

ACK tiene traccia solo delle risorse che crea tramite i manifesti di Kubernetes. Per gestire le AWS risorse esistenti con ACK, utilizza la funzionalità di 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

Per ulteriori informazioni sull'adozione delle risorse, vedereConcetti ACK.

Cross-account risorse non create

Se le risorse non vengono create in un AWS account di destinazione quando si utilizzano i selettori di ruolo IAM, verifica la relazione di fiducia e la IAMRoleSelector configurazione.

Verifica la relazione di fiducia:

# Check the trust policy in the target account role aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'

La politica di fiducia deve consentire al Capability Role dell'account di origine di assumerla.

Conferma IAMRoleSelector la configurazione:

# List IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Describe specific selector kubectl describe iamroleselector my-selector

Verifica l'allineamento dello spazio dei nomi:

IAMRoleSelectors sono risorse con ambito di cluster ma sono destinate a namespace specifici. Assicurati che le tue risorse ACK si trovino in un namespace che corrisponda al selettore dello spazio dei nomi: IAMRoleSelector

# Check resource namespace kubectl get bucket my-cross-account-bucket -n production # List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'

Verifica la condizione: IAMRoleSelected

Verifica che sia IAMRoleSelector stata abbinata correttamente alla tua risorsa controllando la ACK.IAMRoleSelected condizione:

# Check if IAMRoleSelector was matched kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'

Se la condizione è False o manca, il selettore IAMRoleSelector dello spazio dei nomi non corrisponde allo spazio dei nomi della risorsa. Verifica che il selettore namespaceSelector corrisponda alle etichette dello spazio dei nomi della risorsa.

Verifica le autorizzazioni del ruolo di capacità:

Requisiti sts:AssumeRole e sts:TagSession autorizzazioni del Capability Role per il ruolo dell'account di destinazione:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::444455556666:role/cross-account-ack-role" } ] }

Per una configurazione dettagliata tra più account, vedere. Configurare le autorizzazioni ACK

Fasi successive