クラスターを作成した後に発生する Amazon EKS 環境のエラーをトラブルシューティングする方法を教えてください。

所要時間2分
0

クラスターを作成した後、Amazon Elastic Kubernetes Service (Amazon EKS) 環境でエラーが発生します。

簡単な説明

AWSPremiumSupport-TroubleshootEKSCluster オートメーションワークフローを使用して、Amazon EKS 環境の一般的なエラーをトラブルシューティングできます。ワークフローで、エラー、警告、Amazon Web Services (AWS) が推奨するベストプラクティスへのリンクが記載された詳細なレポートを取得できます。

注: AWSPremiumSupport-TroubleshootEKSCluster オートメーションワークフローを使用するには、エンタープライズまたはビジネスサポートプランに登録する必要があります。

次のいずれかの問題が発生した場合は、AWSPremiumSupport-TroubleshootEKSCluster オートメーションワークフローを使用できます。

  • Kubernetes Cluster Autoscaler が動作しない。
  • 内部ロードバランサーが、プライベートサブネットまたはパブリックサブネットに作成されない。
  • ワーカーノードが最新の Amazon マシンイメージ (AMI) を使用しているかどうかがわからない。
  • aws-node ポッドにアクセス拒否エラーが表示される。
  • Amazon Elastic Container Registry (Amazon ECR) イメージがプルできない。
  • マネージドノードが安定しないか、セルフマネージドノードがクラスターに参加しない。

AWSPremiumSupport-TroubleshootEKSCluster オートメーションワークフローでは、次のチェックが実行されます。

  • 内部およびインターネット向けロードバランサーとワーカーセキュリティグループの Cluster AutoScaler サブネットタグの Auto Scaling グループをチェックします。
    重要: ワーカーノードに複数のセキュリティグループが関連付けられている場合は、いずれかのセキュリティグループにタグを適用する必要があります。タグのキーを kubernetes.io/cluster/your-cluster-name に設定します。値を「所有」に設定します。ワーカーノードに関連付けられているセキュリティグループが 1 つしかない場合、このタグはオプションです。
  • ワーカーノードで最新の AMI を確認します。
  • セキュリティグループルールの最小設定と推奨設定を確認します。たとえば、ワークフローは、クラスターのセキュリティグループ (つまり、クラスターにアタッチされたすべてのセキュリティグループ) とワーカーセキュリティグループからの入力と出力を確認します。
  • ネットワークアクセスコントロールリスト (ネットワーク ACL) のカスタム設定を確認します。
  • AmazonEKSWorkerNodePolicy および AmazonEC2ContainerRegistryReadOnly ポリシーを含む、ワーカーノードの AWS Identity and Access Management (IAM) ポリシーをチェックします。
  • ワーカーノードが配置されているサブネットのルートテーブルをチェックして、ワーカーノードがインターネットに接続できるかどうかを確認します。

解決策

ワーカーノードを検出可能にする

ワークノードを検出可能にするため、AWSPremiumSupport-TroubleshootEKSCluster オートメーションワークフローと Amazon EKS クラスターを使用します。

1.    Amazon EC2 コンソールを開きます。

2.    ナビゲーションペインで [インスタンス] を選択します。

3.    ワーカーノード用の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを選択し、[タグ] タブを選択します。

4.    [タグの追加/編集] を選択します。

5.    [キー] に、「kubernetes.io/cluster/your-cluster-name」と入力します。[値] に、「'owned'/ 'shared'」と入力します。

  1. [保存] を選択します。

AWSPremiumSupport-TroubleshootEKSCluster オートメーションワークフローは、次のポリシーに従って実行されます。このポリシーには、クラスターにアクセスするための最低限の権限を含める必要があります。クラスターには AutomationAssumeRole でのみアクセスできます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSPremiumSupportTroubleshootEKSCluster",
      "Effect": "Allow",
      "Action": [
        "eks:ListNodegroups",
        "eks:DescribeCluster",
        "eks:DescribeNodegroup",
        "iam:GetInstanceProfile",
        "iam:ListInstanceProfiles",
        "iam:ListAttachedRolePolicies",
        "autoscaling:DescribeAutoScalingGroups",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeInstances",
        "ec2:DescribeNatGateways",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeRouteTables"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GetPublicSSMParams",
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": [
        "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2/recommended/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-1909-English-Core-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2-gpu/recommended/image_id"
      ]
    },
    {
      "Sid": "UploadObjectToS3",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketPolicyStatus",
        "s3:GetBucketAcl",
        "s3:PutObject"
      ],
      "Resource": [
        "<BUCKET_ARN>",
        "<BUCKET_ARN>/AWSPremiumSupport-TroubleshootEKSCluster-*"
      ]
    }
  ]
}

AWS Systems Manager コンソールからオートメーションワークフローを実行する

1.    Systems Manager コンソールを開きます。

2.    ナビゲーションペインで、[オートメーション] を選択します。

注: Systems Manager のホームページが最初に開いた場合は、メニューアイコンを選択してナビゲーションペインを開き、次に [オートメーション] を選択します。

3.    [オートメーションの実行] を選択します。

4.    [オートメーションドキュメント] 検索ボックスに「AWSPremiumSupport-TroubleshootEKSCluster」と入力し、Enter キーを押します。

5.    検索結果から、「AWSPremiumSupport-TroubleshootEKSCluster」を選択します。

注: ドキュメントの所有者は Amazon です。

6.    [ドキュメントの説明] タブで、[ドキュメントのバージョン][ランタイムのデフォルトバージョン] に設定されていることを確認します。

7.    [次へ] を選択します。

8.    [オートメーションドキュメントの実行] セクションで、[シンプルな実行] を選択します。

9.    [入力パラメータ] セクションで、次のパラメータを設定します。

ClusterName をクラスターの名前に設定します。このクラスターは AWS アカウントで実行されている必要があります。
AutomationAssumeRole をワークフローに使用したい IAM ロールに設定します。
(オプション) 必要に応じて、レポートをアップロードする Amazon Simple Storage Service (Amazon S3) バケットに BucketName を設定します。

: AutomationAssumeRole を指定する場合は、ポリシーに適用される IAM ロールと S3 バケットを作成します。次に、SSM オートメーション用のレポートを独自の S3 バケット (BucketName) にアップロードします。

10.    [実行] を選択します。

11.    進行状況を監視するには、実行中のオートメーションを選択してから [ステップ] タブを選択します。

12.    プロセスが終了したら、[説明] タブを選択し、[出力を表示] を選択して結果を表示します。

注: 結果は、クラスターのすべてのエラーと警告をリストしたレポートとして表示されます。

AWS CLI からオートメーションワークフローを実行する

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してくださいAutomationAssumeRole を指定し、オートメーションワークフローを実行するためにレポートを独自の S3 バケット (S3BucketName) にアップロードしたい場合は、ポリシーに適用される IAM ロールと S3 バケットを作成してください。

レポートを S3 バケットにアップロードする場合は、次のコマンドを実行します。

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"],"S3BucketName":["your_bucket"]}' --region your_region

レポートを S3 バケットにアップロードしない場合は、次のコマンドを実行します。

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"]}' --region your_region
コメントはありません

関連するコンテンツ