Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Solución de problemas con capacidades de ACK
En este tema se proporcionan instrucciones para la solución de problemas de la capacidad de EKS para ACK, como las comprobaciones de estado de la capacidad, la verificación del estado de los recursos y los problemas de permisos de IAM.
nota
Las capacidades de EKS son completamente administradas y se ejecutan fuera del clúster. No tiene acceso a los registros ni a los espacios de nombres de los controladores. La solución de problemas se centra en el estado de la capacidad, el estado de los recursos y la configuración de IAM.
La capacidad está ACTIVA, pero no se crean recursos
Si la capacidad de ACK muestra el estado ACTIVE, pero no se están creando recursos en AWS, compruebe el estado de la capacidad, el estado de los recursos y los permisos de IAM.
Compruebe el estado de la capacidad:
Puede ver los problemas de estado de la capacidad en la consola de EKS o mediante la AWS CLI.
Consola:
-
Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.
-
Seleccione el nombre del clúster.
-
Seleccione la pestaña Observabilidad.
-
Elija Supervisar clúster.
-
Seleccione la pestaña Capacidades para ver el estado de todas las capacidades.
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
Causas habituales:
-
Faltan permisos de IAM: el rol de capacidad no tiene permisos para el servicio de AWS.
-
Espacio de nombres incorrecto: los recursos se crearon en un espacio de nombres sin el IAMRoleSelector adecuado.
-
Especificación de recurso no válida: compruebe las condiciones del estado del recurso para ver si hay errores de validación.
-
Limitación de la API: se están alcanzando los límites de velocidad de la API de AWS.
-
Webhooks de admisión: los webhooks de admisión impiden que el controlador corrija el estado de los recursos.
Compruebe el estado del recurso:
# 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
Verifique los permisos de IAM:
# View the Capability Role's policies aws iam list-attached-role-policies --role-namemy-ack-capability-roleaws iam list-role-policies --role-namemy-ack-capability-role# Get specific policy details aws iam get-role-policy --role-namemy-ack-capability-role--policy-namepolicy-name
Recursos creados en AWS que no se muestran en Kubernetes
ACK solo hace el seguimiento de los recursos que crea a través de los manifiestos de Kubernetes. Para administrar los recursos de AWS existentes con ACK, use la característica de adopción.
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
Para obtener más información sobre la adopción de recursos, consulte Conceptos de ACK.
No se están creando recursos entre cuentas
Si los recursos no se crean en una cuenta de AWS de destino al utilizar los selectores de roles de IAM, compruebe la relación de confianza y la configuración de IAMRoleSelector.
Verifique la relación de confianza:
# Check the trust policy in the target account role aws iam get-role --role-namecross-account-ack-role--query 'Role.AssumeRolePolicyDocument'
La política de confianza debe permitir que el rol de capacidad de la cuenta de origen la asuma.
Confirme la configuración de IAMRoleSelector:
# List IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Describe specific selector kubectl describe iamroleselector my-selector
Compruebe la alineación del espacio de nombres:
Los IAMRoleSelectors son recursos de ámbito del clúster, pero tienen como destino espacios de nombres específicos. Asegúrese de que sus recursos de ACK estén en un espacio de nombres que coincida con el selector de espacios de nombres de IAMRoleSelector:
# Check resource namespace kubectl get bucketmy-cross-account-bucket-nproduction# List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselectormy-selector-o jsonpath='{.spec.namespaceSelector}'
Compruebe la condición de IAMRoleSelected:
Para comprobar que el IAMRoleSelector haya coincidido correctamente con su recurso, compruebe la condición ACK.IAMRoleSelected:
# Check if IAMRoleSelector was matched kubectl get bucketmy-cross-account-bucket-nproduction-o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'
Si la condición es False o falta, el selector de espacios de nombres de IAMRoleSelector no coincide con el espacio de nombres del recurso. Compruebe que el namespaceSelector del selector coincida con las etiquetas del espacio de nombres del recurso.
Compruebe los permisos del rol de capacidad:
El rol de la capacidad necesita los permisos sts:AssumeRole y sts:TagSession para el rol de la cuenta de destino:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`" } ] }
Para obtener información detallada sobre la configuración entre cuentas, consulte Configuración de los permisos de ACK.
Siguientes pasos
-
Consideraciones sobre ACK para EKS: consideraciones y prácticas recomendadas
-
Configuración de los permisos de ACK: configuración de los permisos de IAM y los patrones de varias cuentas
-
Conceptos de ACK: descripción de los conceptos de ACK y el ciclo de vida de los recursos
-
Solución de problemas de capacidades de EKS: orientación general de solución de problemas de la capacidad