スキップしてコンテンツを表示

ワーカーノードを Amazon EKS クラスターに参加させる方法を教えてください。

所要時間2分
0

ワーカーノードが Amazon Elastic Kubernetes Service (Amazon EKS) クラスターに参加できません。

解決策

Amazon EKS クラスターに参加できないワーカーノードをトラブルシューティングするには、次の手順を実行します。

Systems Manager Automation を使用して問題を特定する

AWSSupport-TroubleshootEKSWorkerNode オートメーションランブックを実行して、ワーカーノードがクラスターに参加するのを妨げている問題を特定します。

前提条件:

  • ワーカーノードの AWS Identity and Access Management (IAM) ロールに、AmazonSSMManagedInstanceCore ポリシーがアタッチされていること
  • ワーカーノードが実行中で、Systems Manager からアクセス可能であること

オートメーションの実行について詳しくは、「AWSSupport-TroubleshootEKSWorkerNode」を参照してください。

VPC の DNS 設定を確認する

次の手順を実行します。

  1. Amazon Virtual Private Cloud (Amazon VPC) コンソールを開きます。
  2. ナビゲーションペインで [VPC] を選択します。
  3. お使いの VPC を選択します。
  4. [アクション] を選択し、[VPC の設定を編集] を選択します。
  5. 次の設定を確認します。
    [DNS 解決] が有効になっていることを確認します。
    [DNS ホスト名] が有効になっていることを確認します。
  6. ナビゲーションペインで [DHCP オプションセット] を選択します。
  7. お使いの DHCP オプションセットを選択します。
  8. 次の値を確認します。
    domain-nameregion.compute.internal に設定されていることを確認します。例えば、us-west-2.compute.internal です。
    domain-name-serversAmazonProvidedDNS に設定されていることを確認します。

DHCP オプションセットについて詳しくは、「Amazon VPC の DHCP オプションセット」を参照してください。

ワーカーノードの IAM アクセス許可を確認する

次の手順を実行します。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [ロール] を選択します。
  3. お使いのワーカーノードの IAM ロールを検索します。
  4. そのロールを選択します。
  5. [アクセス許可] タブを選択します。
  6. 次のマネージドポリシーがアタッチされていることを確認します。
    AmazonEKSWorkerNodePolicy
    AmazonEC2ContainerRegistryPullOnly

注: VPC CNI に IRSA または EKS Pod Identity を使用しない場合は、AmazonEKS_CNI_Policy マネージドポリシーもアタッチする必要があります。ただし、このポリシーを Amazon VPC CNI アドオン専用の別のロールにアタッチするのがベストプラクティスです。

ノード IAM ロールの作成について詳しくは、「Amazon EKS ノードの IAM ロール」を参照してください。

ワーカーノードの認証を設定する

認証を設定するには、次の方法のいずれかを選択します。

アクセスエントリを使用する

アクセスエントリは、ワーカーノードにクラスターへのアクセス権を付与する際に推奨される方法です。

  1. Amazon EKS コンソールを開きます。
  2. ナビゲーションペインで [クラスター] を選択します。
  3. お使いのクラスターを選択します。
  4. [アクセス] タブを選択します。
  5. Access entries セクションで、ワーカーノードの IAM ロール ARN のエントリが存在することを確認します。
  6. エントリが存在しない場合は、[アクセスエントリの作成] を選択します。
  7. [IAM プリンシパル ARN] には、インスタンスプロファイル ARN ではなく、ワーカーノードの IAM ロール ARN を入力します。
  8. [タイプ] では、ノードタイプに基づいて [EC2 Linux] または [EC2 Windows] を選択します。
  9. [次へ] を選択し、[作成] を選択します。

アクセスエントリについて詳しくは、「EKS アクセスエントリを使用して Kubernetes へのアクセスを IAM ユーザーに許可する」を参照してください。

aws-auth ConfigMap を使用する

クラスターがアクセスエントリをサポートしていない場合は、aws-auth ConfigMap 方式を使用してください。

aws-auth ConfigMap の設定について詳しくは、「ConfigMap を使用して IAM ユーザーに Kubernetes へのアクセスを許可する」を参照してください。

ユーザーデータ設定を確認する

セルフマネージドノードについては、ユーザーデータに正しいクラスター名と設定が含まれていることを確認します。

ユーザーデータには、お使いのクラスター名を含むブートストラップスクリプトが含まれている必要があります。

#!/bin/bash
/etc/eks/bootstrap.sh my-cluster

注: my-cluster を実際のクラスター名に置き換えます。

ブートストラップスクリプト設定について詳しくは、「Node bootstrapping」(ノードブートストラップ) を参照してください。

ネットワーク接続を確認する

次の手順を実行します。

  1. ワーカーノードがクラスター API サーバーエンドポイントに到達できることを確認します。
  2. パブリックサブネットのノードには、パブリック IP アドレスが割り当てられていることを確認します。
  3. プライベートサブネットのノードについては、サブネットに NAT ゲートウェイへのルートがあることを確認します。
  4. セキュリティグループが次のトラフィックを許可していることを確認します。
    クラスター API 通信用のポート 443
    kubelet 通信用のポート 10250
    DNS 解決用のポート 53 (TCP および UDP)

セキュリティグループの要件について詳しくは、「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。

プライベートクラスターの VPC エンドポイントを確認する

クラスターがプライベートエンドポイントを使用している場合は、次の VPC エンドポイントが存在することを確認してください。

  • com.amazonaws.region.ec2
  • com.amazonaws.region.ecr.api
  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.s3
  • com.amazonaws.region.sts

プライベートクラスターの要件について詳しくは、「インターネットアクセスが制限されたプライベートクラスターをデプロイする」を参照してください。

クラスターロールの設定を確認する

次の手順を実行します。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [ロール] を選択します。
  3. クラスターの IAM ロールを検索します。
  4. そのロールを選択します。
  5. [信頼関係] タブを選択します。
  6. 信頼ポリシーが eks.amazonaws.com によるロールの引き受けを許可していることを確認します。
  7. [アクセス許可] タブを選択します。
  8. AmazonEKSClusterPolicy がアタッチされていることを確認します。

kubelet ログを確認する

ワーカーノードの kubelet ログを確認するには、次の手順を実行します。

  1. SSH または Systems Manager Session Manager を使用してワーカーノードに接続します。

  2. 次のコマンドを実行します。

    sudo journalctl -u kubelet -f
  3. ノードがクラスターに参加できない理由を示すエラーメッセージを探します。

AWS STS エンドポイントがアクティブ化されていることを確認する

お使いの AWS リージョンの AWS STS エンドポイントが、アカウントでアクティブ化されていることを確認します。

STS エンドポイントのアクティベーションについて詳しくは、「AWS リージョンでの AWS STS のアクティブ化と非アクティブ化」を参照してください。

VPC とサブネットのタグ付けを確認する

次の手順を実行します。

  1. Amazon VPC コンソールを開きます。
  2. ナビゲーションペインで [サブネット] を選択します。
  3. ワーカーノードがデプロイされているサブネットを選択します。
  4. [タグ] タブを選択します。
  5. 次のタグが存在することを確認してください。
    Key については、kubernetes.io/cluster/my-cluster
    Value については、shared または owned

注: my-cluster を実際のクラスター名に置き換えます。

関連情報

Amazon EKS クラスターとノードに関する問題をトラブルシューティングする

VPC and Subnet Considerations (VPC とサブネットに関する考慮事項)

コメントはありません

関連するコンテンツ