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

Amazon EKS マネージドノードグループと起動テンプレートに関する問題をトラブルシューティングする方法を教えてください。

所要時間2分
0

Amazon Elastic Kubernetes Service (Amazon EKS) マネージドノードグループおよび、起動テンプレートで問題が発生しています。

解決策

Amazon マシンイメージ (AMI) を指定し、マネージドノードグループ起動テンプレートを使用してワーカーノードを起動する場合、ユーザーデータを構成する必要があります。プライベートクラスターを使用しており、接続に仮想プライベートクラウド (VPC) エンドポイントを利用する場合は、ユーザーデータに次の属性を指定します。

  • certificate-authority
  • api-server-endpoint
  • DNS クラスターの IP アドレス

また、ワーカーノードをクラスターに参加させるためのブートストラップコマンドも指定する必要があります。カスタム起動テンプレートで Amazon マネージドノードグループを使用する場合は、AMI に応じて、起動テンプレートで適切なユーザーデータを指定します。

注: ワーカーノードの起動にマネージドノードグループを使用する場合は、Amazon EKS 最適化 Amazon Linux AMI でユーザーデータを設定する必要はありません。

ワーカーノードのユーザーデータを設定する

AMI に応じてユーザーデータを設定します。

AL2

Amazon Linux 2 AMI を使用する場合は、起動テンプレートのユーザーデータセクションに次の情報を指定します。

 MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -ex
/etc/eks/bootstrap.sh my-cluster \
  --b64-cluster-ca certificate-authority \
  --apiserver-endpoint api-server-endpoint \
  --dns-cluster-ip service-cidr.10 \
  --kubelet-extra-args '--max-pods=my-max-pods-value' \
  --use-max-pods false

--==MYBOUNDARY==-

AL2023

カスタム起動テンプレートでは、セルフマネージドノードまたはマネージドノードグループを使用できます。新規ノードグループの作成時には、クラスターメタデータ apiServerEndpoint、certificateAuthority、およびサービス CIDR を指定する必要があります。Amazon Linux は、ワーカーノードをブートストラップし、クラスターに参加する際に、これらの追加の値を使用します。

設定例:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="//"

--//
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    apiServerEndpoint: https://CCEABD8D413231403775F7AA9E56D037.gr7.us-west-2.eks.amazonaws.com
    certificateAuthority: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJYUxrK2N0M0Zmdll3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNE1qTXlNREk0TlRaYUZ3MHpOREE0TWpFeU1ETXpOVFphTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURTRWF1c25hS1A5azJYOEd1QkEzQ1czQkZjQ3owSk1EUjRrVDhxUERhOHA4OFY5bkNDcUkvMnlaa2sKSHdIc0hpRDR2OWtoc2hCN1h5OFZaeW56NG8vYkhEZUc5MTZCZ0xzN05Ld1E2Sjd4b0dKc3JyVGtwdUJ3dWpTMgpkbGtLSG0yNTRUelNiQ2VWUkFGbVJGVmljUUh5aEpTSElBN0tUT1dHeUhvUEZJd3l4NS8xZkpmdEIxM0Y3MlBBCm9DaFZBNHdEOVFEZ1NxR0xOMTVMNEN2REFVdFVXaXBtRTZQdWRBNTBxMzNCSzRpRzc4Q0lFbDNXSHl6L3dzOEcKek5hQ2N5ZnlINjRFSHpsVkRkZmFHMWh0ODhKZ01pKy82Vm1vbmthdlJhQzVHZlhsdk5MKzFtVnJycWhTT3hBRQpJS1N2aW9rZndjODA5bzJWaUtiSmhkUE5yQTRKQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSR3JPdzVaSmJ4ZmI2dTF1ek4wNFJtSkFCU1ZUQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQTFkTnE2aHhXSgp6OU4zM09XamU2cG5LU3pmbGdCaG5PRXRhSUlKa21kUWpUN0FDdlMwMDJyRjFnQUFneTVRR2pjM29mN3hzRzJoCkczemhuUGFTTXFLampsOWRnZGJsZTVEZmIwTjZGVlZXeGE3SFBxZ0NCeXZ1ZXdXOTYwcmxLZ1luMDJBVm16c3kKVW8rRXgwQVA4Q3lVUzQ5Z0RaSFN3MVZGbE1mbFkwb2thSERabG9lR256WDk1REc0Zzk4ZHR1Vkd1Sm1lZ1lpRApKUmN3T2xubUlDUHNsUXcrbGh2S0NFT0RvM0hBWWdwTGxkSFBvYTJCZlBwbk9IMWtMNlFFMURTZU8wQUhmNjBYCk1mTzVTNUwwQVFidk1aM005c2JJdDlhby9YbWk3NnJHMThtMzMrdy9LWkV5cVg1NHZ6UTlZUHBjSGV6bk5oY2oKUy9XajhNZk9KMk9SCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    cidr: 10.100.0.0/16
    name: my-first-eks-cluster
  kubelet:
    config:
      maxPods: 29
      clusterDNS:
      - 10.100.0.10
    flags:
    - "--node-labels=eks.amazonaws.com/sourceLaunchTemplateVersion=1,alpha.eksctl.io/cluster-name=my-first-eks-cluster,alpha.eksctl.io/nodegroup-name=ng-1,eks.amazonaws.com/nodegroup-image=ami-032a2a7895e882f27,eks.amazonaws.com/capacityType=ON_DEMAND,eks.amazonaws.com/nodegroup=ng-1,eks.amazonaws.com/sourceLaunchTemplateId=lt-0d8806dd42301728f"

--//--

ノード初期化プロセス nodeadm は、YAML 構成スキーマを使用します。詳細については、Amazon EKS AMI のウェブサイトで「nodeadm」および「複数の構成オブジェクトをマージする」を参照してください。

マネージドノードグループの起動テンプレートで複数のノード構成を使用する場合は、「起動テンプレートを使用してマネージドノードをカスタマイズする」を参照してください。

Amazon EKS クラスターで発生するエラーのトラブルシューティング

Client.InternalError: Client error on launch

Client error on launch エラーは、カスタム起動テンプレートで使用する暗号化 Amazon Elastic Block Store (Amazon EBS) ボリュームの権限が正しく付与されていない場合に発生します。暗号化のステータスおよび、AWS Identity and Access Management (AWS IAM) の権限またはポリシーを確認するには、次の手順を実行します。

  1. AWS KMS がボリュームの暗号化に使用する AWS Key Management Service (AWS KMS) キーを有効化します。
  2. AWS KMS キーに必要なキーポリシーが含まれていることを確認します。
  3. キーポリシーを変更し、追加の IAM ロールが暗号化 Amazon EBS ボリュームを操作できるようにします。

SourceEc2LaunchTemplateNotFound または The Amazon EC2 Launch Template lt-abcdefghijklmn version x was not found エラー

SourceEc2LaunchTemplateNotFound エラーは、ノードの Amazon EC2 Auto Scaling グループ経由でカスタム起動テンプレートのバージョンを手動変更した場合に発生します。Amazon EKS コンソールを使用して起動テンプレートのバージョンを更新する必要があります。

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

  1. Amazon EKS コンソールを開きます。
  2. ナビゲーションペインで [クラスター] を選択します。
  3. [クラスター名] で更新するノードグループを含むクラスターを選択します。
  4. [コンピューティング] タブを選択します。
  5. [ノードグループ] で目的のノードを選択し、[バージョンの変更] を選択します。
  6. 更新されたノードグループのバージョンを選択します。さらに、[アップデート戦略]ローリングアップデートであることを確認します。
  7. [更新] を選択します。

このエラーは、起動テンプレートを使用してノードグループを作成し、リファレンステンプレートを削除した場合も発生します。Amazon EKS は、ノードグループの作成に使用するテンプレートを複製します。元のテンプレートを削除した場合は、ノードグループを再作成する必要があります。

ノードグループを再作成するには、次の手順を実行します。

  1. 新しいノードグループを起動します

  2. 次のコマンドを実行し、すべてのノードが正常かつ Ready ステータスであり、クラスターに参加していることを確認します。

    kubectl get nodes
  3. ワーカーノードをドレインします

  4. 元のノードグループを削除します

** 新しい起動テンプレートの作成後、ノードグループは DEGRADED ステータスになります**。

ノードグループが DEGRADED ステータスに変化した場合、次の例に類似したメッセージが表示されます。

"The Amazon EC2 Launch Template : lt-abcdefghijklmn has a new version associated with your Autoscaling group, which is not managed by Amazon EKS. Expected Launch Template version: x"

このエラーは、マネージドノードグループの Amazon EC2 起動テンプレートのバージョンが Amazon EKS が作成するバージョンと一致しない場合に発生します。

カスタム起動テンプレートを使用していない既存のノードグループは、直接更新できません。この問題を解決するには、カスタム設定を含む起動テンプレートとバージョンを作成します。次に、起動テンプレートを使用してノードグループを作成します。カスタムテンプレートから新しいノードグループを起動した場合は、そのテンプレートの新しいバージョンを作成します。

インスタンスが Amazon EKS クラスターに参加できない場合

この問題の解決方法については、「ワーカーノードを Amazon EKS クラスターに参加させる方法を教えてください」を参照してください。

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ