Comment puis-je faire en sorte que mes composants master rejoignent mon cluster Amazon EKS ?

Lecture de 10 minute(s)
0

Mes composants master ne rejoignent pas mon cluster Amazon Elastic Kubernetes Service (Amazon EKS). Je souhaite résoudre ce problème.

Résolution

Pour associer vos composants master à votre cluster Amazon EKS, procédez comme suit.

Important : 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 cloud privé virtuel (VPC) de votre cluster, le paramètre de configuration domain-name-servers est défini sur AmazonProvidedDNS. Pour en savoir plus, consultez la page Jeux d’options DHCP dans Amazon Virtual Private Cloud (Amazon VPC).
  • Vous utilisez une Amazon Machine Image (AMI) Linux optimisée pour Amazon EKS pour lancer vos composants master. L’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.

Utiliser le dossier d’exploitation d’automatisation de Systems Manager pour identifier les problèmes courants

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

Important : Pour garantir le bon fonctionnement de l’automatisation, AWS Systems Manager doit être en cours d’exécution et vos nœuds de travail doivent être autorisés à accéder à Systems Manager. Pour accorder l’autorisation d’accès à AWS Systems Manager, attachez la stratégie AmazonSSMManagedInstanceCore au rôle Gestion des identités et des accès AWS (AWS IAM). Ce rôle IAM correspond à votre profil d’instance Amazon Elastic Compute Cloud (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 via eksctl.

Utilisez le format suivant pour le nom de votre cluster : [-a-zA-Z0-9]{1,100}$.

Procédez comme suit :

  1. Ouvrez le dossier d’exploitation.
  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 savoir pourquoi votre composant master ne rejoint pas votre cluster et connaître les étapes de dépannage associées.

Vérifier que vous disposez d’un support 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 en savoir plus, consultez la page Afficher et mettre à jour les attributs DNS de 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 lancer des nœuds Amazon Linux autogérés dans la console de gestion AWS.

Si vous utilisez des groupes de nœuds gérés pour lancer vos composants master, vous n’avez pas à configurer de données utilisateur avec les AMI Amazon Linux optimisées pour Amazon EKS. Vous devez configurer les données utilisateur uniquement si vous utilisez des AMI personnalisées 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érifier 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 attachée à la table de routage sans redirection vers une route nulle.
  • 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 aucune route nulle.
  • 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 en savoir plus, consultez la page Contrôler le trafic vers vos ressources AWS à 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 passer en revue certains services et points de terminaison couramment utilisés, consultez la section Déployer des clusters privés avec un accès Internet limité. Vous pouvez également créer un service de point de terminaison en fonction de votre cas d’utilisation.

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

Procédez comme suit :

  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.

Mettre à jour l’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

Respecter 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érifier que vos composants master peuvent atteindre le point de terminaison du serveur API pour votre cluster EKS

Vérifiez que vous pouvez lancer des nœuds de travail dans un sous-réseau associé à une table de routage. La table de routage doit être acheminée 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 que les nœuds 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, comme le montre l’exemple suivant :

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

Pour en savoir plus, consultez la page 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.

Vérifier 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.

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

journalctl -f -u kubelet

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 7 mois