Amazon Elastic Kubernetes Service (Amazon EKS) クラスターのマネージドノードグループに問題があります。
簡単な説明
Amazon EKS クラスターのマネージドノードグループエラーの一般的な原因は次のとおりです。
- DHCP オプションが正しくない: API サーバーにノードを登録するとエラーが表示されます
- AWS Key Management Service (AWS KMS) のキー権限が見つからない: AWS KMS キーで暗号化された Amazon Elastic Block Store (Amazon EBS) ボリュームを持つオートスケーリンググループで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動すると、エラーが表示されます
- 起動テンプレートが正しくありません: EC2 起動テンプレートが Amazon EKS が作成したバージョンと一致しないため、マネージドノードグループの状態は低下しています
解決方法
DHCP オプションを確認してください
カスタム DNS で間違った DHCP オプションを使用すると、次のエラーが表示されることがあります。
「ノード「ip-x-x-x-x.eu-region.compute.internal」は無効です:metadata.labels: 値が無効です」
ホスト名が 63 文字以下であることを確認してください。DHCP オプションを確認するには、「Amazon VPC の DHCP オプションセット」を参照してください。AWS リージョンと一致するホスト名を指定します。us-east-1 にある Amazon が提供する DNS サーバーの場合は、ec2.internal を指定します。他のリージョンにある Amazon が提供する DNS サーバーの場合は、region.compute.internal を指定します。
us-east-1 の DHCP オプションセットの例:
domain-name: ec2.internal
**domain-name-servers:**AmazonProvidedDNS
他のリージョンの DHCP オプションセットの例:
domain-name: region.compute.internal
**domain-name-servers:**AmazonProvidedDNS
カスタム DNS の DHCP オプションセットの例:
domain-name: custom DNS name
domain-name-servers: domain name server
**注:**region をリージョンに、custom DNS name をお使いの DNS 名に、domain name serverをお使いのドメインネームサーバーに置き換えます。
詳細については、「DHCP オプションセットの概念」を参照してください。DHCP オプションセットが、複数のオペレーティングシステムを搭載したインスタンスを持つ VPC に関連付けられている場合は、ドメイン名を 1 つだけ指定するのがベストプラクティスです。
EBS ボリューム暗号化のキーポリシーを設定する
Auto Scaling グループのサービスロールにアクセス権がない場合、次のエラーが表示されることがあります。
AccessDeniedException: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/AWSServiceRoleForAutoScaling/AutoScaling is not authorized to perform: kms:GenerateDataKeyWithoutPlaintext on resource: ARN of KMS key"
マネージドノードが AWS KMS キーで暗号化された Amazon EBS ボリュームを使用する場合、Auto Scaling グループのサービスロールはそのボリュームにアクセスできません。
Auto Scaling グループのサービスロールには、暗号化された EBS ボリュームを操作するための以下の権限が必要です。
- kms:Encrypt
- kms:Decrypt
- kms:ReEncrypt*
- kms:GenerateDataKey*
- kms:DescribeKey
- kms:CreateGrant
正しい KMS キーポリシーを設定するには、「暗号化されたボリュームで使用するために必要な AWS KMS キーポリシー」を参照してください。暗号化された EBS ボリュームをより多くの IAM ロールで使用できるようにするために、キーポリシーを変更することができます。詳細については、「KMS キーの使用をキーユーザーに許可する」を参照してください。KMS キーアクセス管理の詳細については、「AWS キー管理サービス」を参照してください。
起動テンプレートのバージョンを更新する
**注:**マネージドノードグループから EC2 起動テンプレートを更新する前に、新しいバージョンを作成します。詳細については、「定義したパラメータを使用して新しい起動テンプレートを作成する」を参照してください。
Auto Scaling グループから直接起動テンプレートを手動で更新すると、次のエラーが表示されることがあります。
「Ec2LaunchTemplateVersionMismatch」
マネージドノードグループから EC2 起動テンプレートを更新するには、次の手順を実行します。
- EKS コンソールを開きます。
- 更新するノードグループを含むクラスターを選択します。
- [設定] タブを選択し、[コンピューティング] タブを選択します。
- 起動テンプレートのノードグループページで、[バージョンの変更] を選択します。
- ノードグループに適用するバージョンを選択します。アップデートストラテジーが [ローリングアップデート] に設定されていることを確認します。
- [更新] を選択します。
**注:**ノードグループを新しいバージョンの EC2 起動テンプレートで更新するのがベストプラクティスです。
カスタム起動テンプレートを使用していないのに Ec2LaunchTemplateVersionMismatch エラーが表示される場合は、起動テンプレートのバージョンを確認してください。ワーカーノードと EKS ノードグループが同じ起動テンプレートバージョンを使用していない可能性があります。この問題を解決するには、Auto Scaling コンソールに移動して EKS が作成したバージョンに戻してください。詳細については、「マネージドノードグループのエラー」を参照してください。マネージドノードグループ内の障害ノードに関するその他の解決策については、「ワーカーノードを Amazon EKS クラスターに参加させるにはどうすればよいですか?」を参照してください。