Amazon EKS クラスターでマネージドノードグループのエラーを解決するにはどうすればよいですか?

最終更新日: 2021 年 11 月 15 日

Amazon Elastic Kubernetes Service (Amazon EKS) クラスターでマネージドノードグループに問題が発生しています。

簡単な説明

API サーバーにノードを登録すると、エラーが発生します。

カスタム DNS で誤った DHCP オプションを使用すると、次のエラーが表示されます。

Node "ip-x-x-x-x.eu-region.compute.internal" is invalid: metadata.labels: Invalid value

この問題を解決するには、解決方法の「DHCP オプションを確認する」のセクションの手順を実行します。

KMS キーで暗号化された Amazon Elastic Block Store (Amazon EBS) ボリュームを持つ Auto Scaling グループで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動すると、エラーが発生します。

エラーの例:

AccessDeniedException: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/AWSServiceRoleForAutoScaling/AutoScaling is not authorized to perform: kms:GenerateDataKeyWithoutPlaintext on resource: ARN of KMS key

マネージドノードが KMS キーで暗号化された Amazon EBS ボリュームを使用している場合、Auto Scaling グループサービスロールはそのボリュームにアクセスできません。キーポリシーを設定するには、解決方法の「EBS ボリューム暗号化のキーポリシーを設定する」のセクションを参照してください。

EC2 起動テンプレートのバージョンが Amazon EKS が作成したバージョンと一致しないため、マネージドノードグループは [Degraded] (低下) ステータスになっています。

Auto Scaling グループから直接起動テンプレートを手動で更新すると、次のエラーが表示されます。

Ec2LaunchTemplateVersionMismatch

この問題を解決するには、解決方法の「起動テンプレートのバージョンを更新する」のセクションの手順を実行します。

マネージドノードグループで障害が発生したノードのその他の解決方法については、ワーカーノードを Amazon EKS クラスターに参加させる方法を教えてくださいを参照してください。

解決方法

DHCP オプションを確認する

ホスト名が 63 文字以下であることを確認します。DHCP オプションを確認するには、DHCP オプションセットの使用を参照してください。

AWS リージョンに一致するホスト名を指定します。us-east-1 の AmazonProvidedDNS サーバーの場合は、[ec2.internal] を指定します。他の AWS リージョンにある AmazonProvidedDNS サーバーの場合は、[region.compute.internal] を指定します。

us-east-1 での DHCP オプションセットの例:

domain-name: ec2.internal
domain-name-servers: AmazonProvidedDNS

他のリージョンでの DHCP オプションセットの例:

domain-name: region name.compute.internal
domain-name-servers: AmazonProvidedDNS

カスタム DNS からの DHCP オプションセットの例:

domain-name:custom DNS name
domain-name-servers: domain name server

注: region name をリージョンに、custom DNS name を DNS 名に、domain name server をドメインネームサーバーに置き換えてください。

詳細については、DHCP オプションセットの概要domain-name セクションを参照してください。

注: DHCP オプションセットが、複数のオペレーティングシステムを持つインスタンスがある VPC に関連付けられている場合は、ドメイン名を 1 つだけ指定するのがベストプラクティスです。

EBS ボリューム暗号化のキーポリシーを設定する

暗号化された EBS ボリュームを使用するには、Auto Scaling グループサービスロールに次の許可が必要です。

  • kms:Encrypt
  • kms:Decrypt
  • kms:ReEncrypt*
  • kms:GenerateDataKey*
  • kms:DescribeKey
  • kms:CreateGrant

正しい KMS キーポリシーを設定するには、暗号化されたボリュームで使用するのに必要な AWS KMS キーポリシーを参照してください。

暗号化された EBS ボリュームでより多くの IAM ロールを使用できるようにするために、キーポリシーを変更できます。詳細については、KMS キーの使用をキーユーザーに許可するを参照してください。

KMS キーアクセス管理の詳細については、KMS キーへのアクセスを管理するを参照してください。

起動テンプレートのバージョンを更新する

注: マネージドノードグループから EC2 起動テンプレートを更新する前に、新しいバージョンを作成してください。詳細については、定義したパラメータを使用した新しい起動テンプレートの作成を参照してください。

マネージドノードグループから EC2 起動テンプレートを更新するには、次の手順を実行します。

  1. EKS コンソールを開きます。
  2. 更新するノードグループを含むクラスターを選択します。
  3. [Configuration] (設定) タブを選択し、[Compute] (コンピューティング) タブを選択します。
  4. 起動テンプレートのノードグループのページで、[Change version] (バージョンを変更) を選択します。
  5. ノードグループに適用するバージョンを選択します。更新方法が [Rolling Update] (ローリング更新) に設定されていることを確認します。
  6. [Update] (更新) を選択します。

注: EC2 起動テンプレートの新しいバージョンを使用してノードグループを更新するのがベストプラクティスです。

カスタム起動テンプレートを使用せず、Ec2LaunchTemplateVersionMismatch エラーが発生した場合、ワーカーノードは EKS ノードグループと同じバージョンを使用していません。この問題を解決するには、Auto Scaling コンソールに移動して EKS が作成したバージョンに戻します。詳細については、マネージド型ノードグループのエラーを参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?