Que faire pour que mes composants master rejoignent mon cluster Amazon EKS ?

Lecture de 11 minute(s)
0

Mes composants master ne rejoignent pas mon cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Pour que vos composants master rejoignent votre cluster Amazon EKS, procédez comme suit :

  • Utilisez le runbook d'AWS Systems Manager Automation pour cerner les problèmes courants.
  • Vérifiez que vous disposez d'un soutien DNS pour votre service Amazon Virtual Private Cloud (Amazon VPC).
  • Vérifiez que les composants master de votre profil d'instance disposent des autorisations appropriées.
  • Configurez les données utilisateur pour vos composants master.
  • Vérifiez que le réseau est correctement configuré pour vos sous-réseaux Amazon VPC.
  • Vérifiez que vos composants master se trouvent dans le même VPC que votre cluster EKS.
  • Mettez à jour le aws-auth ConfigMap ainsi que le NodeInstanceRole de vos composants master.
  • Respectez les exigences des groupes de sécurité de vos composants master.
  • Définissez les balises pour vos composants master.
  • Vérifiez que vos composants master peuvent atteindre le point de terminaison du serveur API pour votre cluster EKS.
  • Vérifiez que le rôle de cluster est correctement configuré pour votre cluster EKS.
  • Pour les régions AWS qui prennent en charge les points de terminaison du service de jetons de sécurité AWS (AWS STS), vérifiez que le point de terminaison régional AWS STS est activé.
  • Assurez-vous que l'AMI est configurée pour fonctionner avec Amazon EKS et qu'elle inclut les composants requis.
  • Utilisez SSH pour vous connecter à l'instance Amazon Elastic Compute Cloud (Amazon EC2) de votre composant master, puis recherchez les erreurs dans les journaux de l’agent Kubelet.
  • Utilisez le script collector de journaux d’Amazon EKS pour résoudre les erreurs.

Remarque : Les étapes suivantes n'incluent pas les configurations requises pour enregistrer les composants master dans des environnements où les critères suivants ne sont pas remplis :

  • Dans le VPC de votre cluster, le paramètre de configuration domain-name-servers est défini sur AmazonProvidedDNS. Pour plus d'informations, consultez la rubrique Jeux d'options DHCP.
  • Vous utilisez le service Amazon Machine Image (AMI) Linux optimisée pour Amazon EKS pour lancer vos composants master.
    Remarque : Le service AMI Linux optimisée pour Amazon EKS fournit toutes les configurations nécessaires, y compris un script bootstrap /etc/eks/bootstrap.sh, pour enregistrer les composants master dans votre cluster.

Résolution

Utilisez le runbook d'automatisation de Systems Manager pour identifier les problèmes courants

Utilisez le runbook AWSSupport-TroubleshooTeksWorkerNode pour cerner les problèmes courants qui empêchent les composants master de rejoindre votre cluster.

Remarque : Pour que l'automatisation fonctionne, vos composants master doivent être autorisés à accéder au service Systems Manager en cours d'exécution. Pour accorder cette autorisation, associez la stratégie AmazonSSMManagedInstanceCore au rôle AWS Identity and Access Management (IAM). Il s'agit du rôle IAM qui correspond à votre profil d'instance Amazon EC2. Il s'agit de la configuration par défaut pour les groupes de nœuds gérés par Amazon EKS que vous créez à l'aide de l'outil de ligne de commande eksctl. Utilisez le format suivant pour le nom de votre cluster : [-a-zA-Z0-9]{1,100}$.

  1. Ouvrez le runbook.
  2. Vérifiez que la région AWS dans la console de gestion AWS est définie sur la même région que votre cluster.
    Remarque : Consultez la section Détails du document du runbook, pour plus d'informations sur le runbook.
  3. Dans la section Paramètres d'entrée, saisissez le nom de votre cluster dans le champ ClusterName et l'ID de l'instance Amazon EC2 dans le champ WorkerID.
  4. (Facultatif) Dans le champ AutomationAssumeRole, indiquez le rôle IAM pour permettre à Systems Manager d'effectuer des actions. Lorsque vous ne le spécifiez pas, les autorisations IAM de votre entité IAM actuelle sont utilisées pour effectuer les actions du runbook.
  5. Choisissez Exécuter.
  6. Consultez la section Sorties pour découvrir pourquoi votre composant master ne rejoint pas votre cluster et le processus de résolution.

Vérifiez que vous disposez d'un soutien DNS pour votre service Amazon VPC

Vérifiez que les noms d'hôte DNS et la résolution DNS sont activés sur Amazon VPC pour votre cluster EKS.

Pour vérifier ces attributs et les activer, procédez comme suit :

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, cliquez sur Vos VPC.
  3. Sélectionnez le VPC que vous souhaitez modifier.
  4. Dans l'onglet Détails, vérifiez si Noms d'hôte DNS et Résolution DNS sont activés.
  5. S'ils ne le sont pas, sélectionnez Activer pour les deux attributs.
  6. Choisissez Enregistrer les modifications.

Pour plus d'informations, consultez Afficher et mettre à jour les attributs DNS pour votre VPC.

Vérifiez que les composants master de votre profil d'instance disposent des autorisations appropriées.

Associez les politiques gérées par AWS suivantes au rôle associé aux composants master de votre profil d'instance :

  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonEC2ContainerRegistryReadOnly

Pour associer des politiques à des rôles, consultez la section Ajout des autorisations d'identité IAM (console).

Configurez les données utilisateur pour vos composants master

Remarque : Si vous utilisez AWS CloudFormation pour lancer vos composants master, il n’est pas nécessaire de configurer les données utilisateur pour vos composants master. Suivez plutôt les instructions pour Lancement de nœuds Amazon Linux autogérés dans la console de gestion AWS.

Si vous lancez vos composants master à l'aide de groupes de nœuds gérés, vous n'avez pas à configurer de données utilisateur avec les AMI Amazon Linux optimisés pour Amazon EKS. Vous devez configurer les données utilisateur uniquement si vous utilisez des AMI personnalisés pour lancer vos composants master via des groupes de nœuds gérés.

Si vous utilisez des groupes de nœuds gérés par Amazon avec un modèle de lancement personnalisé, indiquez les données utilisateur correctes dans le modèle de lancement. Si le cluster Amazon EKS est un cluster entièrement privé qui utilise des points de terminaison d’un VPC pour établir des connexions, spécifiez les éléments suivants dans les données utilisateur :

  • certificate-authority
  • api-server-endpoint
  • Adresse IP du cluster DNS

Si nécessaire, fournissez des données utilisateur pour passer des arguments au fichier bootstrap.sh inclus avec une AMI Linux/Bottlerocket optimisée pour Amazon EKS.

Pour configurer les données utilisateur pour vos composants master, spécifiez les données utilisateur lorsque vous lancez vos instances Amazon EC2.

Par exemple, si vous utilisez un outil tiers tel que Terraform, mettez à jour le champ Données utilisateur pour lancer vos composants master EKS :

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}

Important :

  • Remplacez ${ClusterName} par le nom de votre cluster EKS.
  • Remplacez ${BootstrapArguments} par des valeurs bootstrap supplémentaires ou laissez cette propriété vide.

Vérifiez que le réseau est correctement configuré pour vos sous-réseaux Amazon VPC.

  • Si vous utilisez une passerelle Internet, assurez-vous qu'elle est correctement connectée à la table de routage et qu'il n'y a pas de trou noir.
  • Si vous utilisez une passerelle NAT, assurez-vous qu'elle est correctement configurée dans un sous-réseau public. Vérifiez également que la table de routage ne contient aucun trou noir.
  • Si vous utilisez des points de terminaison privés d’un VPC pour un cluster entièrement privé, assurez-vous de disposer des points de terminaison suivants :
    com.amazonaws.region.ec2 (point de terminaison de l'interface)
    com.amazonaws.region.ecr.api (point de terminaison de l'interface)
    com.amazonaws.region.ecr.dkr (point de terminaison de l'interface)
    com.amazonaws.region.s3 (point de terminaison de la passerelle)
    com.amazonaws.region.sts (point de terminaison de l'interface)
  • Les pods que vous configurez avec des rôles IAM pour les comptes de service obtiennent des informations d'identification à partir d’un appel API du Service de jetons de sécurité AWS (AWS STS). S'il n'y a pas d'accès Internet sortant, vous devez créer et utiliser un point de terminaison VPC AWS STS dans votre VPC.
  • Le groupe de sécurité pour le point de terminaison du VPC doit disposer d'une règle entrante qui autorise le trafic à partir du port 443. Pour plus d'informations, consultez la rubrique Contrôler le trafic vers les ressources à l'aide de groupes de sécurité.
  • Assurez-vous que la politique associée au point de terminaison du VPC dispose des autorisations requises.

Remarque : Si vous utilisez un autre service AWS, vous devez créer ces points de terminaison. Pour certains services et points de terminaison couramment utilisés, consultez la section Exigences relatives aux clusters privés. Vous pouvez également créer un service de point de terminaison en fonction de votre cas d'utilisation.

Vérifiez que vos composants master se trouvent dans le même Amazon VPC que votre cluster EKS.

  1. Ouvrez la console Amazon EKS.
  2. Choisissez Clusters, puis sélectionnez votre cluster.
  3. Dans la section Mise en réseau, identifiez les sous-réseaux associés à votre cluster.

Remarque : Vous pouvez configurer différents sous-réseaux dans lesquels lancer vos composants master. Les sous-réseaux doivent exister dans le même Amazon VPC et être correctement balisés. Amazon EKS gère automatiquement les balises uniquement pour les sous-réseaux que vous configurez lors de la création du cluster. Veillez donc à baliser les sous-réseaux convenablement.

Pour plus d'informations, consultez la section Exigences et considérations pour les sous-réseaux.

Mettez à jour aws-auth ConfigMap avec le NodeInstanceRole de vos composants master.

Vérifiez que aws-auth ConfigMap est correctement configuré avec le rôle IAM de votre composant master et non avec le profil d'instance.

Pour vérifier le fichier aws-auth ConfigMap, exécutez la commande suivante :

kubectl describe configmap -n kube-system aws-auth

Lorsque le fichier aws-auth ConfigMap n'est pas configuré correctement, l'erreur suivante s'affiche :

571 reflector.go:153\] k8s.io/kubernetes/pkg/kubelet/kubelet.go:458 : Failed to list \*v1.Node: Unauthorized

Respectez les exigences des groupes de sécurité de vos composants master.

Vérifiez que le groupe de sécurité de votre plan de contrôle et le groupe de sécurité du composant master sont configurés avec des paramètres conformes aux bonnes pratiques pour le trafic entrant et sortant. Vérifiez également que les règles de votre ACL réseau personnalisé sont configurées pour autoriser le trafic à destination et en provenance de 0.0.0.0/0 pour les ports 80, 443, et 1025-65535.

Définissez les balises pour vos composants master.

Pour la propriété Balise de vos composants master, définissez Clé sur kubernetes.io/cluster/clusterName et Value sur owned.

Pour plus d'informations, consultez la section Exigences et considérations requises pour le VPC.

Vérifiez que vos composants master peuvent atteindre le point de terminaison du serveur API pour votre cluster EKS.

Tenez compte des points suivants :

  • Vous pouvez lancer des composants master dans un sous-réseau associé à une table de routage qui redirige vers le point de terminaison de l'API via un NAT ou une passerelle Internet.
  • Lorsque vous lancez vos composants master sur un réseau privé restreint, vérifiez que vos composants master peuvent atteindre le point de terminaison du serveur API EKS.
  • Lorsque vous lancez des composants master avec un Amazon VPC qui utilise un DNS personnalisé au lieu de AmazonProvidedDNS, il est possible qu'ils ne résolvent pas le point de terminaison. Un point de terminaison non résolu se produit lorsque l'accès public au point de terminaison est désactivé et que seul l'accès privé est activé. Pour plus d'informations, consultez Activation de la résolution DNS pour les points de terminaison du cluster Amazon EKS.

Vérifiez que le rôle de cluster est correctement configuré pour votre cluster.

Votre cluster doit avoir le rôle de cluster avec l'autorisation minimale AmazoneKSClusterPolicy. De plus, la relation de confiance de votre cluster doit autoriser le service eks.amazonaws.com pour sts:AssumeRole.

Exemple :

{
  "Version": "2012-10-17",
  "Statement": \[
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  \]
}

Pour plus d'informations, consultez la section Rôle IAM de cluster Amazon EKS.

Vérifiez que les points de terminaison STS régionaux sont activés.

Si le cluster se trouve dans une région qui prend en charge les points de terminaison STS, activez le point de terminaison STS régional pour authentifier le kubelet. Le kubelet peut ensuite créer l'objet nœud.

Assurez-vous que l'AMI est configurée pour fonctionner avec EKS et qu'elle inclut les composants requis.

Si le service AMI utilisé pour les composants master n'est pas le service AMI Amazon Linux optimisé pour Amazon EKS, vérifiez que les composants Kubernetes suivants sont actifs :

  • kubelet
  • AWS IAM Authenticator
  • Docker (Amazon EKS versions 1.23 et antérieures)
  • containerd

Connectez-vous à votre instance de composant master EKS avec SSH et consultez les journaux de l'agent Kubelet.

L'agent kubelet est configuré en tant que service systemd.

1.Pour valider vos journaux Kubelet, exécutez la commande suivante :

journalctl -f -u kubelet

2.Si vous rencontrez des difficultés, consultez le guide de dépannage d'Amazon EKS pour les erreurs les plus courantes.

Utiliser le script collecteur de journaux Amazon EKS pour résoudre les erreurs

Vous pouvez utiliser les fichiers journaux et les journaux du système d'exploitation pour résoudre les problèmes liés à votre Amazon EKS.

Vous devez utiliser SSH pour vous connecter au composant master concerné par le problème et exécuter le script suivant :

curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/log-collector-script/linux/eks-log-collector.sh

sudo bash eks-log-collector.sh

Informations connexes

Comment résoudre les problèmes liés à la création de groupes de nœuds gérés par Amazon EKS ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an