Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

eksctlがノードのクラスタ参加待ちで停止するときの対処法

By Vladik KhononovOct 23, 20192 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

1 6azquqzs s3yzqi gx4tvw

Kubernetesクラスタの作成中、原因を特定できるログがないままこのエラーに直面したお客様は数多くいらっしゃいます。本記事ではDoiTが実際に行っている解決方法をご紹介します。

AWS EKSでKubernetesクラスタを作成する際に`eksctl`を使うと、ノードのクラスタ参加を待ち続けたままプロセスが進まなくなり、次のようなエラーが表示されることがあります。

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

このメッセージが追加のログもなく表示されたまま、最終的にプロセスはタイムアウトし、新しく作成されたノードはKubernetesクラスタと通信できない状態に陥ります。DoiT Internationalでの経験上、この問題の主な原因は2つです。VPCの設定ミス、もしくはポリシーの不足です。

VPCの設定ミス

既存のVPCネットワークを使う場合は、そのVPCがEKS固有の要件 [1, 2] をすべて満たしているか確認する必要があります。logz.ioのブログ記事では、VPCネットワークの構築手順が詳しく解説されており、ベースとして活用できるAWS Cloud Formationテンプレートのサンプルも紹介されています [3]。

IAMポリシーの不足

もう1つの主な原因は、EKSワーカーノードがクラスタと通信するために必要なAmazonEKSWorkerNodePolicyおよびAmazonEKS_CNI_Policy [4] に関係するものです。eksctlはデフォルトでこれらのポリシーを含むロールを自動生成しますが、「attachPolicyARNs」プロパティでARNを指定して特定のポリシーをアタッチする場合は、以下のように明示的に含める必要があります[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/ElasticLoadBalancingFullAccess

これでも同じエラーが出る場合は、状況をこの記事のコメント欄にお寄せください。

[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

[5] https://eksctl.io/usage/iam-policies/