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

最終更新日: 2021 年 8 月 24 日

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

簡単な説明

AWSPremiumSupport-TroubleshootEKSCluster 自動化ワークフローを使用して、Amazon EKS 環境の一般的なエラーのトラブルシューティングを行うことができます。ワークフローでは、エラー、警告、および AWS が推奨するベストプラクティスへのリンクが記載された詳細なレポートが提供されます。

次の問題が発生した場合は、AWSPremiumSupport-TroubleshootEKSCluster 自動化ワークフローを使用できます。

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

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

  • 内部およびインターネット向けロードバランサーおよびワーカーセキュリティグループの Cluster AutoScaler サブネットタグの Auto Scaling グループをチェックします。
    重要:ワーカーノードに複数のセキュリティグループが関連付けられている場合は、セキュリティグループの 1 つにタグを適用する必要があります。 タグのキーをkubernetes.io/cluster/your-cluster-name に設定します。値を Owned に設定します。ワーカーノードに関連付けられているセキュリティグループが 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' と入力します。

6.    [保存] をクリックします。

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": "YOUR_BUCKET_NAME>"
        }
    ]
}

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

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

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

注: Systems Manager ホームページが最初に開く場合は、メニューアイコンを選択してナビゲーションペインを開き、[Automation] をクリックします。

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

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

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

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

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

7.    [次へ] をクリックします。

8.    [自動化ドキュメントの実行] セクションで [シンプルな実行] をクリックします。

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

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

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

11.    実行の進行状況をモニタリングするには、実行中の [オートメーション] を選択し、[ステップ] タブをクリックします。

12.    実行が完了したら、[説明] タブを選択し、[出力を表示する] をクリックして結果を表示します。

注: 結果は、クラスターのすべてのエラーと警告を一覧表示する詳細レポートの形式になります。

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

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

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

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


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