Comment résoudre les problèmes 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 d’Échec.

Brève description

Si vous rencontrez des problèmes avec le point de terminaison de votre serveur API Kubernetes, suivez les étapes de l'une des sections suivantes :

  • Vous ne pouvez exécuter aucune commande kubectl sur le cluster nouveau ou existant
  • Vous ne pouvez pas exécuter de commandes kubectl sur le cluster après avoir modifié l'accès au point de terminaison de public à privé
  • Votre cluster est bloqué à l'état d’Échec et vous ne pouvez pas modifier le paramètre d'accès au point de terminaison de public à privé

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

Résolution

Vous ne pouvez pas exécuter de commandes kubectl sur le cluster nouveau ou existant

  1. Vérifiez que vous utilisez les fichiers kubeconfig appropriés pour vous connecter à votre cluster. Pour en savoir plus, consultez la rubrique Organisation de l'accès au cluster à l'aide de fichiers kubeconfig (sur le site Web de Kubernetes).

  2. Vérifiez la présence de plusieurs contextes dans chaque cluster dans vos fichiers kubeconfig.

Exemple de sortie :

kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
Cluster name    Server
new200.us-east-2.eksctl.io       https://D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com

Si les fichiers kubeconfig existants ne contiennent pas les bonnes informations de cluster, utilisez la commande suivante pour en créer un, basé sur les bonnes informations :

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

**Remarque :remplacez le nom du cluster par le nom de votre cluster et la ** région par votre région AWS.

  1. Utilisez le telnet sur le port 443 pour valider la connectivité du point de terminaison du serveur API depuis votre appareil.

Exemple de sortie :

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 le telnet ne fonctionne pas, procédez comme suit pour résoudre les problèmes :

Vérifiez le résolveur DNS

Si le serveur API ne résout pas le problème, le problème vient du résolveur DNS.

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

nslookup APISERVER endpoint

**Remarque :**remplacez le point de terminaison APISERVER par votre point de terminaison APISERVER.

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

Si vous avez spécifié des blocs CIDR pour limiter l'accès au point de terminaison du serveur API public, mieux vaut activer également l'accès au point de terminaison privé.

  1. Vérifiez le comportement d'accès au point de terminaison du serveur API. Voir Modification de l'accès aux points de terminaison du cluster.

Vous ne pouvez pas exécuter de commande kubectl sur le cluster après avoir modifié l'accès au point de terminaison de public à privé

  1. Vérifiez que vous utilisez un hôte bastion ou des réseaux connectés, tels que des VPC peered, AWS Direct Connect ou des VPN pour accéder au point de terminaison de l'API Amazon EKS.

**Remarque :**en mode d'accès privé, vous ne pouvez accéder au point de terminaison de l'API Amazon EKS que par le VPC du cluster.

  1. Vérifiez si les groupes de sécurité ou les listes de contrôle d'accès au réseau bloquent les appels d'API.

Si vous accédez à votre cluster via un VPC peered, vérifiez que les groupes de sécurité du plan de contrôle autorisent l'accès à partir du VPC peered aux groupes de sécurité du plan de contrôle sur le port 443. Vérifiez également que les ports 53 des VPC peered sont mutuellement ouverts. Le port 53 est utilisé pour la résolution DNS.

Votre cluster est bloqué à l'état Échec et vous ne pouvez pas modifier le paramètre d'accès au point de terminaison de public à privé

Votre cluster est peut-être à l’état d’Échec en raison d'un problème d'autorisation lié à AWS Identity and Access Management (IAM).

  1. Vérifiez que le rôle IAM de l'utilisateur est autorisé à exécuter l'action AssociateVPCWithHostedZone.

**Remarque :**si l'action n'est pas bloquée, vérifiez si le compte de l'utilisateur est soumis à des stratégies AWS Organizations bloquant les appels d'API et provoquant l'échec du cluster.

  1. Vérifiez que l'autorisation de l'utilisateur IAM n'est pas bloquée implicitement ou explicitement à un niveau supérieur au compte.

**Remarque :**l'autorisation utilisateur IAM est implicitement bloquée si elle n'est pas incluse dans la déclaration de stratégie Autoriser. Elle est explicitement bloquée si elle est incluse dans la déclaration de stratégie Refuser. L'autorisation est bloquée même si l'administrateur du compte attache la politique IAM AdministratorAccess à des autorisations */* à l'utilisateur. Les autorisations issues des politiques d'AWS Organizations remplacent les autorisations accordées aux entités IAM.


Informations connexes

Exigences et considérations relatives aux groupes de sécurité Amazon EKS

Résolution DNS pour les clusters EKS utilisant des points de terminaison privés

Amazon EKS permet de restreindre l'accès au réseau aux points de terminaison publics du cluster Kubernetes

Contrôle d'accès aux points de terminaison du cluster Amazon EKS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans