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

Lecture de 4 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.

Brève description

En fonction de votre problème, suivez les étapes décrites dans l'une des sections suivantes.

**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 nouveau cluster ou sur un cluster existant

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

Procédez comme suit :

  1. Vérifiez que vous utilisez le fichier kubeconfig approprié pour vous connecter à votre cluster. Pour en savoir plus, consultez la page Organizing cluster access using kubeconfig files 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 le fichier kubeconfig utilisé ne contient pas les bonnes informations de cluster, exécutez la commande suivante pour créer une nouvelle entrée pour le cluster :
    aws eks update-kubeconfig --name CLUSTER NAME --region REGION
    Remarque : remplacez CLUSTER NAME par le nom de votre cluster et REGION par votre région AWS.
  3. Utilisez le telnet sur le port 443 pour vérifier 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 la commande telnet ne fonctionne pas, procédez comme suit pour résoudre les problèmes.

Vérifiez le résolveur DNS

Si le problème ne peut pas être résolu au niveau du serveur API, 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 APISERVER ENDPOINT par le point de terminaison du serveur API de votre cluster.

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, il est recommandé d’activer également l'accès au point de terminaison privé.

Vérifiez le comportement d'accès au point de terminaison du serveur API. Consultez la page 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 pour passer de public à privé

Pour résoudre ce problème, procédez comme suit :

  1. Vérifiez que vous utilisez un hôte bastion ou des réseaux connectés, tels que des cloud privé virtuel VPC appairés, AWS Direct Connect ou des VPN, afin d’accéder au point de terminaison de l'API Amazon EKS.
    Remarque : en mode d'accès privé, il est uniquement possible d’accéder au point de terminaison de l'API Amazon EKS via le VPC du cluster.
  2. Vérifiez si les groupes de sécurité ou les listes de contrôle d'accès au réseau bloquent les requêtes adressées au serveur API Kubernetes.
    Si vous accédez à votre cluster via un VPC appairé, vérifiez que les groupes de sécurité du plan de contrôle autorisent l'accès correct. Ils doivent autoriser un accès à partir du VPC appairé aux groupes de sécurité du plan de contrôle Amazon EKS sur le port 443.

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

Votre cluster peut être à l’état Échec en raison d'un problème d'autorisation lié à la Gestion des identités et des accès AWS (AWS IAM).

Pour résoudre ce problème, procédez comme suit :

  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 politiques AWS Organizations qui bloquent les appels d'API et provoquent l'échec du cluster.
  2. 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.
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an