Passer au contenu

Comment résoudre les problèmes de connectivité liés au point de terminaison du serveur API de mon cluster Amazon EKS ?

Lecture de 5 minute(s)
0

Je ne peux pas exécuter les commandes kubectl. Par ailleurs, j'ai modifié le paramètre d'accès du point de terminaison de public à privé sur mon cluster Amazon Elastic Kubernetes Service (Amazon EKS). Mon cluster est désormais bloqué à l’état Échec.

Résolution

Remarque : Pour configurer l'accès au point de terminaison du serveur API Kubernetes, consultez la section Modification de l'accès au point de terminaison du cluster.

Résoudre les erreurs de commande kubectl sur un cluster nouveau ou existant

Vérifier que votre fichier kubeconfig se connecte à votre cluster

Procédez comme suit :

  1. Vérifiez que vous avez utilisé le fichier kubeconfig approprié pour vous connecter à votre cluster. Pour en savoir plus, consultez la page Organisation de l’accès au cluster à l’aide de fichiers kubeconfig sur le site Web de Kubernetes.

  2. Exécutez la commande suivante pour répertorier les contextes de cluster dans votre fichier kubeconfig :

    kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'

    Exemple de sortie : 

    Cluster name Server "example-cluster-name" https://"example-cluster-endpoint".eks.amazonaws.com
  3. Vérifiez que les noms et les points de terminaison de cluster de votre fichier kubeconfig sont corrects. Si le nom ou le point de terminaison d'un cluster est incorrect, exécutez la commande suivante pour mettre à jour le contexte de votre cluster dans le fichier kubeconfig :

    aws eks update-kubeconfig --name example-cluster-name --region example-region

    Remarque : Remplacez example-cluster-name par le nom du cluster que vous mettez à jour et example-region par votre région AWS.

  4. Sur votre appareil, exécutez la commande telnet suivante sur le port 443 pour vérifier la connectivité des points de terminaison du serveur API :

    telnet example-server-endpoint 443

    Remarque : Remplacez example-server-endpoint par le point de terminaison de votre serveur API.
    Dans l'exemple de sortie suivant, le port 433 peut se connecter au point de terminaison du serveur D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com :

    $ echo exit | telnet D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com 443  
    Trying 18.224.160.210...  
    Connected to D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com.  
    Escape character is '^]'.  
    Connection closed by foreign host.

Si votre appareil ne parvient pas à se connecter au point de terminaison du serveur API via le port 433, suivez les étapes de résolution décrites dans les sections suivantes.

Vérifier le résolveur DNS

Exécutez la commande suivante à partir de l’appareil sur lequel les commandes kubectl ont échoué :

nslookup example-server-endpoint

Remarque : Remplacez example-server-endpoint par le point de terminaison de votre serveur API.

Vérifier si vous avez restreint l'accès public au point de terminaison du serveur API

Effectuez l'une des actions suivantes en fonction de vos besoins :

  • Si vous avez restreint l'accès public aux points de terminaison du serveur API à l'aide de blocs d'adresse CIDR, vérifiez que l'adresse IP de votre machine cliente se situe dans les plages d'adresses CIDR autorisées.
  • Si vous avez besoin d'un accès depuis l'extérieur de votre Amazon Virtual Private Cloud (Amazon VPC), utilisez un point de terminaison public avec des restrictions CIDR.

Assurez-vous que la combinaison d'accès de votre point de terminaison de serveur API répond à vos besoins d'accès.

Remarque : Il est recommandé de définir le point de terminaison de votre serveur API en mode privé et de configurer le VPN AWS pour un accès externe. Pour plus d'informations, consultez la section Accès à un serveur API privé uniquement.

Résoudre les erreurs de commande kubectl sur un cluster après le passage de l'accès public au point de terminaison à un accès privé

Effectuez les opérations suivantes :

  • Vérifiez que vous utilisez un hôte bastion ou des réseaux connectés pour accéder au point de terminaison de l'API Amazon EKS. Les réseaux connectés incluent les VPC appairés, AWS Direct Connect et les VPN.
    Remarque : En mode d'accès privé, il est uniquement possible d’accéder au point de terminaison de l'API Amazon EKS depuis l’intérieur du VPC ou des réseaux connectés du cluster.
  • Vérifiez si les groupes de sécurité ou les listes de contrôle d'accès au réseau (ACL réseau) bloquent les requêtes adressées au serveur API Kubernetes.
    Remarque : Si vous utilisez un VPC appairé, vérifiez que les groupes de sécurité du plan de contrôle autorisent l'accès depuis le VPC appairé sur le port 443.

Résoudre les problèmes liés à un cluster bloqué en état d'échec lorsque vous ne pouvez pas modifier le paramètre d'accès au point de terminaison de public à privé

En cas de problème d'autorisations avec Gestion des identités et des accès AWS (AWS IAM), votre cluster passe à l’état Échec.

Vérifiez que le rôle IAM que vous utilisez est autorisé à effectuer l'action AssociateVPCWithHostedZone.

Si l'action n'est pas bloquée, vérifiez si les politiques de contrôle de services (SCP) d'AWS Organizations bloquent les appels d'API sur votre compte AWS. Vérifiez qu'aucun refus implicite ou explicite ne bloque les autorisations de votre utilisateur IAM au niveau de l'organisation ou du compte. Les instructions de rejet bloquent les autorisations, même si l'administrateur du compte attache la politique IAM AdministratorAccess à des autorisations */* à l'utilisateur. Les SCP d'AWS Organizations remplacent les autorisations des entités IAM.

AWS OFFICIELA mis à jour il y a 4 mois