¿Cómo puedo solucionar los errores en mi entorno de Amazon EKS después de crear un clúster?

Última actualización: 14/07/2022

Recibo errores en mi entorno de Amazon Elastic Kubernetes Service (Amazon EKS) después de crear un clúster.

Descripción corta

Puede utilizar el flujo de trabajo de automatización de AWSPremiumSupport-TroubleshootEKSCluster para solucionar los errores comunes del entorno de Amazon EKS. El flujo de trabajo proporciona un informe detallado en el que se enumeran los errores, las advertencias y los enlaces a las prácticas recomendadas de Amazon Web Services (AWS).

Nota: Para usar el flujo de trabajo de automatización de AWSPremiumSupport-TroubleshootEKSCluster, debe estar suscrito a un plan de soporte Enterprise o Business.

Puede utilizar el flujo de trabajo de automatización AWSPremiumSupport-TroubleshootEKSCluster si experimenta alguno de los siguientes problemas:

  • El Cluster Autoscaler de Kubernetes no funciona.
  • El balanceador de cargas interno no se crea en subredes públicas o privadas.
  • No sabe si los nodos de trabajo utilizan la última imagen de máquina de Amazon (AMI).
  • Obtiene errores de acceso denegado en los pods aws-node.
  • No se pueden extraer imágenes de Amazon Elastic Container Registry (Amazon ECR).
  • Los nodos administrados no se estabilizan o los nodos autoadministrados no se unen a un clúster.

El flujo de trabajo de automatización AWSPremiumSupport-TroubleshootEKSCluster ejecuta estas verificaciones:

  • Comprueba los grupos de escalado automático para las etiquetas de subred del escalador automático de clústeres para equilibradores de carga internos, con conexión a Internet y grupos de seguridad de trabajo.
    Importante: Si tiene más de un grupo de seguridad asociado a los nodos de trabajo, debe aplicar una etiqueta a uno de los grupos de seguridad. Establezca la clave de la etiqueta en kubernetes.io/cluster/your-cluster-name. Establezca el valor como owned (propio). Esta etiqueta es opcional si solo tiene un grupo de seguridad asociado a los nodos de trabajo.
  • Verifique la AMI más reciente en los nodos de trabajo.
  • Verifique la configuración mínima y recomendada de las reglas del grupo de seguridad. Por ejemplo, el flujo de trabajo verifica la entrada y salida del grupo de seguridad del clúster (es decir, de todos los grupos de seguridad adjuntos al clúster) y del grupo de seguridad de trabajo.
  • Verifique las configuraciones personalizadas de la lista de control de acceso de la red (ACL de la red).
  • Verifique las políticas de AWS Identity and Access Management (IAM) en los nodos de trabajo, incluidas las políticas AmazonEKSWorkerNodePolicy y AmazonEC2ContainerRegistryReadOnly.
  • Verifique si los nodos de trabajo pueden conectarse a Internet al comprobar las tablas de enrutamiento de las subredes en las que se encuentran.

Resolución

Haga que los nodos de trabajo sean detectables

Para que sus nodos de trabajo sean detectables, utilice el flujo de trabajo de automatización AWSPremiumSupport-TroubleshootEKSCluster y el clúster de Amazon EKS:

1.    Abra la consola de Amazon EC2.

2.    En el panel de navegación, elija Instances (Instancias).

3.    Seleccione las instancias de Amazon Elastic Compute Cloud (Amazon EC2) para los nodos de trabajo y, a continuación, elija la pestaña Tags (Etiquetas).

4.    Seleccione Add/Edit Tags (Agregar/editar etiquetas).

5.    En Key (Clave), ingrese kubernetes.io/cluster/your-cluster-name. EnValue (Valor), ingrese 'owned'/ 'shared' (“propio”/”compartido”).

6.    Elija Save (Guardar).

El flujo de trabajo de automatización AWSPremiumSupport-TroubleshootEKSCluster se ejecuta con la siguiente política. Esta política debe incluir permisos mínimos para acceder al clúster. Solo AutomationAssumeRole puede acceder al clúster.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSPremiumSupportTroubleshootEKSCluster",
      "Effect": "Allow",
      "Action": [
        "eks:ListNodegroups",
        "eks:DescribeCluster",
        "eks:DescribeNodegroup",
        "iam:GetInstanceProfile",
        "iam:ListInstanceProfiles",
        "iam:ListAttachedRolePolicies",
        "autoscaling:DescribeAutoScalingGroups",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeInstances",
        "ec2:DescribeNatGateways",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeRouteTables"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GetPublicSSMParams",
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": [
        "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2/recommended/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-1909-English-Core-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2-gpu/recommended/image_id"
      ]
    },
    {
      "Sid": "UploadObjectToS3",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketPolicyStatus",
        "s3:GetBucketAcl",
        "s3:PutObject"
      ],
      "Resource": [
        "<BUCKET_ARN>",
        "<BUCKET_ARN>/AWSPremiumSupport-TroubleshootEKSCluster-*"
      ]
    }
  ]
}

Ejecute el flujo de trabajo de automatización desde la consola de AWS Systems Manager

1.    Abra la consola de Systems Manager.

2.    En el panel de navegación, seleccione Automation (Automatización).

Nota: Si la página de inicio de Systems Manager se abre primero, elija el icono de menú para abrir el panel de navegación y, a continuación, elijaAutomation (Automatización).

3.    Elija Execute automation (Ejecutar automatización).

4.    En el cuadro de búsqueda de Automation document (Documentos de automatización), ingrese AWSPremiumSupport-TroubleshootEKSCluster y, a continuación, presione Enter (Intro).

5.    En los resultados de búsqueda, seleccione AWSPremiumSupport-TroubleshootEKSCluster.

Nota: El propietario del documento es Amazon.

6.    En la pestaña Document description (Descripción del documento), verifique que la Document version (Versión del documento) está establecida en Default version at runtime (Versión predeterminada en tiempo de ejecución).

7.    Seleccione Siguiente.

8.    En la sección Execute automation document (Ejecutar documento de automatización), elija Simple execution (Ejecución sencilla).

9.    En la sección Input parameters (Parámetros de entrada), defina los siguientes parámetros:

Establezca ClusterName en el nombre del clúster. Este clúster debe ejecutarse en la cuenta de AWS.
Configure AutomationAssumeRole en el rol de IAM que desee utilizar para el flujo de trabajo.
(Opcional) Si es necesario, defina BucketName en el bucket de Amazon Simple Storage Service (Amazon S3) en el que desea cargar el informe.

Nota: Si desea especificar el valor de AutomationAssumeRole, cree un rol de IAM y un bucket de S3 que se apliquen a la política. A continuación, cargue el informe en su propio bucket de S3 (BucketName) para la automatización de SSM.

10.    Elija Execute (Ejecutar).

11.    Para supervisar el progreso, elija la automatización en ejecución y, luego, elija la pestaña Steps (Pasos).

12.    Cuando finalice el proceso, elija la pestaña Descriptions (Descripciones) y, a continuación, elija View output (Ver salida) para ver los resultados.

Nota: Los resultados aparecen como un informe que enumera todos los errores y advertencias del clúster.

Ejecutar el flujo de trabajo de automatización desde la AWS CLI

Nota: Si se producen errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de la AWS CLI. Cree un rol de IAM y un bucket de S3 que se apliquen a la política si desea especificar un valor para AutomationAssumeRole y cargar el informe en su propio bucket de S3 (S3BucketName) para ejecutar el flujo de trabajo de automatización.

Si desea que el informe se presente en un bucket de S3, ejecute este comando:

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"],"S3BucketName":["your_bucket"]}' --region your_region

Si no quiere cargar el informe en un bucket de S3, ejecute este comando:

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"]}' --region your_region

¿Le ha resultado útil este artículo?


¿Necesita asistencia técnica o con la facturación?