Comment puis-je résoudre les erreurs dans mon environnement Amazon EKS après avoir créé un cluster ?

Lecture de 6 minute(s)
0

Des erreurs apparaissent dans mon environnement Amazon Elastic Kubernetes Service (Amazon EKS) après avoir créé un cluster.

Brève description

Vous pouvez utiliser le flux de travail d’automatisation AWSPremiumSupport-TroubleshootEKSCluster pour résoudre les erreurs courantes dans 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 meilleures pratiques recommandées par Amazon Web Services (AWS).

Remarque : Pour utiliser le flux de travail d’automatisation AWSPremiumSupport-TroubleshootEKSCluster, vous devez être abonné à un Support plan (Plan de support) Enterprise ou Business.

Vous pouvez utiliser le flux de travail d’automatisation 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 des sous-réseaux privés ou publics.
  • Vous ne savez pas si vos composants master utilisent Amazon Machine Image (AMI) la plus récente.
  • Vous recevez des erreurs d’accès refusé dans vos pods aws-node.
  • Vous ne pouvez pas extraire d’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 rejoignent pas un cluster.

Le flux de travail d’automatisation AWSPremiumSupport-TroubleshootEKSCluster exécute les vérifications suivantes :

  • Vérifie les groupes Auto Scaling pour les balises de sous-réseau Cluster AutoScaler pour les équilibreurs de charge internes et connectés à Internet et les groupes de sécurité des travailleurs.
    Important : Si plusieurs groupes de sécurité sont associés à vos composants master, vous devez 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 (à détenir). Cette balise est facultative si un seul groupe de sécurité est associé à vos composants master.
  • Vérifie la dernière version de l’AMI sur les composants master.
  • Vérifie les règles du groupe de sécurité pour les paramètres minimaux et recommandés. Par exemple, le flux de travail vérifie les entrées et les sorties depuis le groupe de sécurité du cluster (c’est-à-dire tous les groupes de sécurité attachés au cluster) et depuis le groupe de sécurité du travailleur.
  • Configurations de la liste de contrôle d’accès au réseau (ACL réseau).
  • Vérifie les politiques AWS Identity and Access Management (IAM) appliquées aux composants master, notamment les politiques Amazon AmazonEKSWorkerNodePolicy et AmazonEC2ContainerRegistryReadOnly.
  • Vérifie si les composants master peuvent se connecter à Internet en consultant les tables de routage des sous-réseaux dans lesquels ils se trouvent.

Résolution

Rendez vos composants master détectables

Pour rendre vos composants master 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 volet de navigation, choisissez Instances.

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

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

5.    Pour Key (Clé), entrez kubernetes.io/cluster/your-cluster-name. Pour Value (Valeur), saisissez 'owned'/'shared' (« possédé »/« partagé »).

6.    Choisissez Save (Enregistrer).

Le flux de travail d’automatisation AWSPremiumSupport-TroubleshootEKSCluster s’exécute selon la politique suivante. Cette politique doit inclure des autorisations minimales pour accéder au cluster. Le cluster n’est accessible que par AutomationAssumeRole (Rôle de 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": [
        "<BUCKET_ARN>",
        "<BUCKET_ARN>/AWSPremiumSupport-TroubleshootEKSCluster-*"
      ]
    }
  ]
}

Exécutez le flux de travail d’automatisation depuis la console AWS Systems Manager

1.    Ouvrez la console Systems Manager.

2.    Dans le volet de navigation, choisissez Automation (Automatisation).

Remarque : Si la page d’accueil de Systems Manager s’ouvre en premier, choisissez l’icône du menu pour ouvrir le volet de navigation, puis choisissez Automation (Automatisation).

3.    Choisissez Execute automation (Exécuter l’automatisation).

4.    Dans la zone de recherche de Automation document (Document d’automatisation), entrez AWSPremiumSupport-TroubleshootEKSCluster, puis appuyez sur Enter (Entrée).

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

Remarque : Le propriétaire du document est Amazon.

6.    Dans l’onglet Document description (Description du document), vérifiez que la Document version (Version du document) est définie sur Default version at runtime (Version par défaut lors de l’exécution).

7.    Choisissez Next (Suivant).

8.    Dans la section Execute automation document (Exécuter le document d’automatisation), choisissez Simple execution (Exécution simple).

9.    Dans la section Input parameters (Paramètres d’entrée), entrez les paramètres suivants :

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

Remarque : Si vous souhaitez spécifier le AutomationAssumeRole (Rôle de l’automatisation), créez un rôle IAM et un compartiment S3 qui s’appliquent à la politique. Chargez ensuite le rapport dans votre propre compartiment S3 (BucketName (Nom du compartiment)) pour l’automatisation SSM.

10.    Choisissez Execute (Exécuter).

11.    Pour suivre la progression, choisissez l’Automation (Automatisation) en cours d’exécution, puis choisissez l’onglet Steps (Étapes).

12.    Lorsque le processus est terminé, choisissez l’onglet Descriptions, puis choisissez View output (Afficher la sortie) pour afficher les résultats.

Remarque : Les résultats apparaissent sous la forme d’un rapport qui répertorie toutes les erreurs et tous les avertissements relatifs à votre cluster.

Exécutez le flux de travail d’automatisation à partir de l’interface de ligne de commande AWS

Remarque : Si des erreurs surviennent lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente de l’AWS CLI. Créez un rôle IAM et un compartiment S3 qui s’appliquent à la politique si vous souhaitez spécifier AutomationAssumeRole (Rôle de l’automatisation) et télécharger le rapport dans votre propre compartiment S3 (S3BucketName (Nom du compartiment S3)) pour exécuter le flux de travail d’automatisation.

Si vous souhaitez que le rapport se trouve 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"],"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