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

Dernière mise à jour : 24/08/2021

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

Brève description

Vous pouvez utiliser le flux de travail d'automatisation AWSPremiumSupport-TroubleshootEKSCluster pour résoudre les erreurs courantes avec 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 AWS.

Vous pouvez utiliser le flux de travail d'automatisation AWSPremiumSupport-TroubleshootEKSCluster si vous rencontrez les 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 nœuds de travail utilisent l’Amazon Machine Image (AMI) la plus récente.
  • Vous obtenez 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 les vérifications suivantes :

  • 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 nœuds de travail, vous devez appliquer une balise à l'un de vos groupes de sécurité. Définissez la clé de la balise sur kubernetes.io/cluster/nom-de-votre-cluster. Définissez la valeur sur owned. Cette balise est facultative si un seul groupe de sécurité est associé à vos nœuds de travail.
  • 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 and Access Management (IAM) sur les nœuds de travail, y compris les stratégies AmazonEKSWorkerNodePolicy et AmazonEC2ContainerRegistryReadOnly.
  • Vérifie si les nœuds de travail 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) de vos nœuds de travail, puis choisissez l'onglet Balises.

4.    Choisissez Gérer les balises.

5.    Pour Clé, entrezkubernetes.io/cluster/your-cluster-name/nom-de-votre-cluster. Pour Valeur, entrez « owned »/« shared ».

6.    Choisissez Enregistrer.

Le flux de travail d'automatisation AWSPremiumSupport-TroubleshootEKSCluster s'exécute avec la stratégie suivante. Cette stratégie doit inclure les autorisations minimales pour accéder au cluster. Le cluster est accessible par AutomationAssumeRole ou par l'utilisateur qui exécute l'automatisation.

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

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, choisissez 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 : le propriétaire du document est Amazon.

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

7.    Sélectionnez Suivant.

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

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

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

10.    Sélectionnez Exécuter.

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

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

Remarque : les résultats se présentent sous la forme d'un rapport détaillé qui répertorie toutes les erreurs et tous les avertissements de 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 depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Si vous souhaitez que le rapport soit placé dans un compartiment S3, exécutez la commande suivante :

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 télécharger le rapport dans un compartiment S3, exécutez la commande suivante :

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 ?


Besoin d'aide pour une question technique ou de facturation ?