
Beaucoup de nos clients qui ont tenté de créer un cluster Kubernetes ont rencontré ce message d'erreur sans logs précis pour en identifier la cause. Voici comment nous le résolvons habituellement.
Lorsque l'on utilise `eksctl` pour créer des clusters Kubernetes sur AWS EKS, le processus reste souvent bloqué en attendant que les nœuds rejoignent le cluster, et l'erreur suivante apparaît :
> nodegroup "my-cluster" has 0 node(s) > waiting for at least 3 node(s) to become ready in "my-cluster" > timed out (after 25m0s) waiting for at least 3 nodes to join the cluster and become ready in "my-cluster"
Le message s'affiche sans aucun log supplémentaire et le processus finit par expirer, alors que les nœuds nouvellement créés ne parviennent pas à communiquer avec le cluster Kubernetes. D'après notre expérience chez DoiT International, ce problème a deux causes principales : un VPC mal configuré ou des politiques manquantes.
VPC mal configuré
Lorsque vous utilisez un réseau VPC existant, vous devez vous assurer qu'il respecte toutes les exigences propres à EKS [1, 2]. L'article de blog de logz.io détaille la configuration d'un réseau VPC et propose un exemple de modèle AWS Cloud Formation à utiliser comme point de départ [3].
Politiques IAM manquantes
Une autre cause fréquente concerne les politiques AmazonEKSWorkerNodePolicy et AmazonEKS_CNI_Policy [4], indispensables aux nœuds worker EKS pour communiquer avec le cluster. Par défaut, eksctl génère automatiquement un rôle contenant ces politiques. En revanche, lorsque vous utilisez la propriété " attachPolicyARNs " pour rattacher des politiques spécifiques par ARN, vous devez les inclure explicitement [5] :
nodeGroups: - name: my-special-nodegroup iam: attachPolicyARNs:- arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
- arn:aws:iam::aws:policy/ElasticLoadBalancingFullAccessVous rencontrez toujours ces erreurs ? Partagez votre situation en commentaire de cet article.
[1] https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html
[2] https://eksctl.io/usage/vpc-networking/
[3] https://logz.io/blog/amazon-eks/
[4] https://docs.aws.amazon.com/eks/latest/userguide/worker_node_IAM_role.html