Solución de problemas con capacidades de ACK - Amazon EKS

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:

  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. Seleccione el nombre del clúster.

  3. Seleccione la pestaña Observabilidad.

  4. Elija Supervisar clúster.

  5. 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-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

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-name cross-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 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}'

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 bucket my-cross-account-bucket -n production -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