Comment résoudre les erreurs dans mon environnement Amazon EKS après la création d'un cluster ?

Dernière mise à jour : 14/07/2022

J'obtiens des erreurs dans mon environnement Amazon Elastic Kubernetes Service (Amazon EKS) après la création d'un cluster.

Brève description

Il vous est possible d’utiliser l’automatisation du flux de travail AWSPremiumSupport-TroubleshootEKSCluster pour résoudre les erreurs courantes de votre environnement Amazon EKS. Le flux de travail fournit un rapport détaillé qui répertorie les erreurs, les avertissements et les liens vers les bonnes pratiques recommandées par Amazon Web Services (AWS).

Remarque : pour utiliser l’automatisation des flux de travail AWSPremiumSupport-TroubleshootEKSCluster, vous devez avoir souscrit à un plan Support Enterprise ou Business.

Vous pouvez utiliser l’automatisation des flux de travail AWSPremiumSupport-TroubleshootEKSCluster si vous rencontrez l’un des problèmes suivants :

  • Votre Kubernetes Cluster Autoscaler ne fonctionne pas.
  • Votre équilibreur de charge interne n'est pas créé dans les sous-réseaux privés ni publics.
  • Vous ne savez pas si vos composants master de travail utilisent Amazon Machine Image (AMI) la plus récente.
  • Vous recevrez des erreurs d'accès refusé dans vos pods aws-node.
  • Vous ne parvenez pas à extraire les images Amazon Elastic Container Registry (Amazon ECR).
  • Vos nœuds gérés ne se stabilisent pas ou vos nœuds autogérés ne se joignent pas à un cluster.

Le flux de travail d'automatisation AWSPremiumSupport-TroubleshootEKSCluster exécute ces vérifications :

  • Recherche dans les groupes Auto Scaling les balises de sous-réseau Cluster AutoScaler pour les équilibreurs de charge internes et Internet et les groupes de sécurité de nœud de travail.
    Important : si plusieurs groupes de sécurité sont associés à vos composants master, vous devez alors appliquer une balise à l'un de vos groupes de sécurité. Définissez la clé de la balise sur kubernetes.io/cluster/your-cluster-name. Définissez la valeur sur owned. Cette balise est facultative si un seul groupe de sécurité est associé à vos composants master.
  • Vérifie que les nœuds de travail utilisent l’AMI la plus récente.
  • Vérifie que les paramètres minimaux et recommandés sont appliqués aux règles des groupes de sécurité. Par exemple, le flux de travail vérifie l'entrée et la sortie du groupe de sécurité du cluster (c'est-à-dire tous les groupes de sécurité attachés au cluster) et du groupe de sécurité du nœud de travail.
  • Vérifie les configurations des listes de contrôle d'accès au réseau (ACL réseau).
  • Vérifie les stratégies AWS Identity et Access Management (IAM) sur les composants master, y compris les politiques AmazonEKSWorkerNodePolicy et AmazonEC2ContainerRegistryReadOnly.
  • Vérifie si les composants master peuvent se connecter à Internet en vérifiant les tables de routage des sous-réseaux dans lesquels ils se situent.

Résolution

Rendez vos nœuds de travail détectables

Pour rendre vos nœuds de travail détectables, utilisez le flux de travail d'automatisation AWSPremiumSupport/TroubleshooteksCluster et votre cluster Amazon EKS :

1.    Ouvrez la console Amazon EC2.

2.    Dans le panneau de navigation, choisissez Instances.

3.    Sélectionnez les instances Amazon Elastic Compute Cloud (Amazon EC2) pour vos composants master, puis choisissez l'onglet Balises.

4.    Choisissez Add/Edit Tags (Ajouter/Modifier des balises).

5.    Pour la Clé, saisissezkubernetes.io/cluster/your-cluster-name. Pour la Valeur, saisissez « owned »/« shared ».

6.    Choisissez Enregistrer.

Le flux de travail d'automatisation AWSPremiumSupport-TroubleshootEKSCluster s'exécute avec la politique suivante. Cette politique doit inclure les autorisations minimales pour accéder au cluster. Le cluster n'est accessible que par 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-*"
      ]
    }
  ]
}

Exécutez le flux de travail d'automatisation à partir de la console AWS Systems Manager

1.    Ouvrez la console Systems Manager.

2.    Dans le panneau de navigation, choisissez Automatisation.

Remarque : si la page d'accueil de Systems Manager s'ouvre en premier, sélectionnez l'icône de menu pour ouvrir le panneau de navigation, puis choisissez Automatisation.

3.    Choisissez Exécuter l'automatisation.

4.    Dans la zone de recherche Document d'automatisation, saisissez AWSPremiumSupport-TroubleshootEKSCluster, puis appuyez sur Entrée.

5.    Dans les résultats de la recherche, sélectionnez AWSPremiumSupport-TroubleshootEKSCluster.

Remarque : Amazon est le propriétaire du document.

6.    Dans l’onglet Description du document, vérifiez que la Version du document est définie sur Version par défaut lors de l'exécution.

7.    Choisissez Suivant.

8.    Dans la section Exécuter le document d'automatisation, choisissez Exécution simple.

9.    Dans la section Paramètres d'entrée, définissez les paramètres suivants :

Définissez ClusterName pour le nom du cluster. Ce cluster doit être en cours d’exécution dans votre compte AWS.
Définissez AutomationAssumeRole  pour le rôle IAM que vous souhaitez utiliser pour le flux de travail.
(Facultatif) Si nécessaire, définissez BucketName pour le compartiment Amazon Simple Storage Service (Amazon S3) sur lequel vous souhaitez télécharger le rapport.

Remarque : si vous souhaitez définir le rôle AutomationAssumeRole, créez un rôle IAM et un compartiment S3 applicables à la politique. Téléchargez ensuite le rapport dans votre propre compartiment S3 (BucketName) pour l'automatisation du SSM.

10.    Choisissez Exécuter.

11.    Pour surveiller la progression, choisissez Automatisation en cours d'exécution, puis l'onglet Étapes.

12.    Une fois l'exécution terminée, choisissez l'onglet Descriptions puis choisissez Voir les résultats pour afficher les résultats.

Remarque : les résultats apparaissent sous forme de rapport répertoriant toutes les erreurs et tous les avertissements pour votre cluster.

Exécutez le flux de travail d'automatisation à partir de l'AWS CLI

Remarque : si vous recevez des erreurs lors de l'exécution de commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente de l'AWS CLI. Créez un rôle IAM et un compartiment S3 applicables à la politique si vous souhaitez définir AutomationAssumeRole et télécharger le rapport dans votre propre compartiment S3 (S3BucketName) pour exécuter le flux de travail de l’automatisation.

Exécutez cette commande si vous souhaitez que le rapport soit placé dans un compartiment S3 :

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 vous ne souhaitez pas charger le rapport dans un compartiment S3, exécutez cette commande :

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

Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?