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

6 minutos de lectura
0

Después de crear un clúster, en el entorno de Amazon Elastic Kubernetes Service (Amazon EKS) se muestran errores.

Descripción corta

Puede utilizar el flujo de trabajo de automatización AWSPremiumSupport-TroubleshootEKSCluster para solucionar los errores habituales en el 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 AWSPremiumSupport-TroubleshootEKSCluster, debe estar suscrito a un plan de AWS Support: Enterprise o Business.

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

  • El Escalador automático de clústeres de Kubernetes no funciona.
  • El equilibrador de carga interno no se crea en subredes públicas ni privadas.
  • No sabe si los nodos de trabajo utilizan la versión más reciente de la 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 escalamiento 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. Defina la clave kubernetes.io/cluster/nombre-de-su-clúster para la etiqueta. Establezca el valor como propio. Esta etiqueta es opcional si solo tiene un grupo de seguridad asociado a los nodos de trabajo.
  • Comprueba si los nodos de trabajo tienen la versión más reciente de AMI.
  • Consulta la configuración mínima y recomendada en las reglas del grupo de seguridad. Por ejemplo, el flujo de trabajo comprueba la entrada y la 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.
  • Comprueba las configuraciones de la lista de control de acceso de la red (ACL de la red).
  • Comprueba las políticas de AWS Identity and Access Management (IAM) en los nodos de trabajo, incluidas las políticas AmazonEKSWorkerNodePolicy y AmazonEC2ContainerRegistryReadOnly.
  • Comprueba si los nodos de trabajo pueden conectarse a Internet; para ello, consulta las tablas de enrutamiento de las subredes en las que se encuentran.

Resolución

Hacer que los nodos de trabajo sean detectables

Para que los nodos de trabajo se puedan detectar, 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, seleccione 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 Etiquetas.

4.    Elija Añadir/Editar etiquetas.

5.    En Clave, introduzca kubernetes.io/cluster/nombre-de-su-clúster. En Valor, introduzca propio/compartido.

6.    Elija 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 se puede acceder al clúster mediante AutomationAssumeRole.

{
  "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-*"
      ]
    }
  ]
}

Ejecución del 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, elija 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, elija Automatización.

3.    Elija Ejecutar automatización.

4.    En el cuadro de búsqueda Documento de automatización, escriba AWSPremiumSupport-TroubleshootEKSCluster y, a continuación, pulse Intro.

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

Nota: El propietario del documento es Amazon.

6.    En la pestaña Descripción del documento, compruebe que Versión del documento se haya definido como Versión predeterminada en tiempo de ejecución.

7.    Elija Siguiente.

8.    En la sección Ejecutar documento de automatización, elija Ejecución simple.

9.    En la sección Parámetros de entrada, establezca los siguientes parámetros:

Introduzca el nombre del clúster como ClusterName. Este clúster debe ejecutarse en su cuenta de AWS.
Defina AutomationAssumeRole con el rol de IAM que quiera usar para el flujo de trabajo.
(Opcional) Si es necesario, defina BucketName con el bucket de Amazon Simple Storage Service (Amazon S3) en el que quiera cargar el informe.

Nota: Si quiere especificar 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 Ejecutar.

11.    Para supervisar el progreso, seleccione la automatización en ejecución y, a continuación, elija la pestaña Pasos.

12.    Cuando finalice el proceso, elija la pestaña Descripciones y, a continuación, elija Ver resultado para ver los resultados.

Nota: Los resultados se muestran en un informe que enumera todos los errores y advertencias del clúster.

Ejecución del flujo de trabajo de automatización desde AWS CLI

Nota: Si se muestran errores mientras ejecuta comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que está utilizando la versión más reciente de 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 quiere que el informe esté 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