翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
prebootstrapコマンドを使用して、SSM エージェントと CloudWatch エージェントを Amazon EKS ワーカーノードにインストールします。
アッカマハデヴィ・ハイアマス (AWS) によって作成された
概要
このパターンは、Amazon EKS クラスターの作成中に AWS Systems Manager Agent (SSM Agent) と Amazon CloudWatch エージェントをAmazon Web Services (AWS) クラウド内の Amazon Elastic Kubernetes Service (Amazon EKS) ワーカーノードにインストールするためのコードサンプルと手順を提供します。SSM エージェントと CloudWatch エージェントは、eksctl
「設定ファイルスキーマpreBootstrapCommands
のプロパティを使用してインストールできます。そうすれば、Amazon Elastic Compute Cloud (Amazon EC2) key pair を使用せずに SSM Agent を使用してワーカーノードに接続できます。さらに、CloudWatch エージェントを使用して Amazon EKS ワーカーノードのメモリとディスクの使用状況をモニタリングできます。
前提条件と制限
前提条件
アクティブな AWS アカウント。
macOS、Linux、または Windows で、インストールおよび設定されている「eksctl コマンドラインユーティリティ」
macOS、Linux、または Windows で、インストールおよび設定されている「kubectl コマンドラインユーティリティ」
制約事項
実行時間の長いスクリプトは
preBootstrapCommands
プロパティに追加しないことをお勧めします。追加すると、スケーリングアクティビティ中にノードが Amazon EKS クラスターに参加するのが遅れるためです。代わりに「カスタム Amazon Machine Image (AMI)」を作成することをお勧めします。このパターンは、Amazon EC2 Linux インスタンスにのみ適用されます。
アーキテクチャ
テクノロジースタック
Amazon CloudWatch
Amazon エラスティックKubernetesサービス (Amazon EKS)
Systems Manager パラメータストア
ターゲットアーキテクチャ
次の図は、preBootstrapCommands
を使用してインストールされた SSM エージェントを使用して Amazon EKS ワーカーノードに接続するユーザーの例を示しています。

この図表は、次のワークフローを示しています:
ユーザは、
preBootstrapCommands
プロパティを持つeksctl
設定ファイルを使用してAmazon EKSクラスタを作成し、SSMエージェントとCloudWatchエージェントをインストールします。スケーリングアクティビティによって後でクラスターに追加される新しいインスタンスは、プレインストールされた SSM エージェントと CloudWatch エージェントを使用して作成されます。
ユーザーは SSM エージェントを使用して Amazon EC2 に接続し、CloudWatch エージェントを使用してメモリとディスクの使用状況をモニタリングします。
ツール
Amazon CloudWatch は、AWS のリソースや、AWS で実行されるアプリケーションをリアルタイムに監視します。
Amazon Elastic Kubernetes Service (Amazon EKS) は、AWS で Kubernetes を実行する際に役立ち、独自の Kubernetes コントロールプレーンまたはノードをインストールまたは維持する必要はありません。
AWS Systems Manager Parameter Store は、設定データ管理とシークレット管理用の安全な階層型ストレージを提供します。
「AWS Systems Manager Session Manager」は、AWS Systems Manager で、インタラクティブなワンクリックブラウザベースのシェルまたは AWS CLI Command Line Interface (AWS CLI) を介して管理できます。
eksctl
– これは Amazon EKS で Kubernetes クラスターを作成および管理するコマンドラインユーティリティです。 kubectl
– これはクラスター API サーバーとの通信用コマンドラインユーティリティです。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
CloudWatch エージェント設定ファイルを保存します。 | CloudWatch エージェント設定ファイルを、Amazon EKS クラスターを作成する AWS リージョンの「AWS Systems Manager Parameter Store」に保存します。これを行うには、AWS Systems Manager Parameter Storeで「パラメータを作成」し、パラメータの名前 (例: 詳細については、このパターンの「追加情報」セクションにある「CloudWatch エージェント設定ファイルの例」を参照してください。 | DevOps エンジニア |
eksctl 設定ファイルとクラスターを作成します。 |
| AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
SSM Agent をテストします。 | SSH を使用して、AWS Systems Manager ドキュメントの「セッションの開始」で説明されている方法のいずれかを使用して Amazon EKS クラスターノードに接続します。 | AWS DevOps |
CloudWatch エージェントをテストします。 | CloudWatch コンソールを使用して CloudWatch エージェントを検証します。
| AWS DevOps |
関連リソース
サーバーにエージェントをインストールして実行する (Amazon CloudWatch ドキュメント)
Systems Manager パラメータを作成する (コンソール) (AWS Systems Manager ドキュメント)
CloudWatch エージェント設定ファイルを作成する (Amazon CloudWatch ドキュメント)
セッションを開始します (AWS Systems Manager のドキュメント)
セッションを開始する (Amazon EC2 コンソール) (AWS Systems Manager ドキュメント)
追加情報
CloudWatch エージェント設定ファイルの例
次の例では、CloudWatch エージェントは Amazon Linux インスタンスのディスクとメモリの使用状況を監視するように設定されています。
{ "agent": { "metrics_collection_interval": 60, "run_as_user": "cwagent" }, "metrics": { "append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}", "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}" }, "metrics_collected": { "disk": { "measurement": [ "used_percent" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "mem": { "measurement": [ "mem_used_percent" ], "metrics_collection_interval": 60 } } } }
eksctl 設定ファイルの例
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: test region: us-east-2 version: "1.24" managedNodeGroups: - name: test minSize: 2 maxSize: 4 desiredCapacity: 2 volumeSize: 20 instanceType: t3.medium preBootstrapCommands: - sudo yum install amazon-ssm-agent -y - sudo systemctl enable amazon-ssm-agent - sudo systemctl start amazon-ssm-agent - sudo yum install amazon-cloudwatch-agent -y - sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudwatch-linux iam: attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
その他のコードの詳細
preBootstrapCommands
プロパティの最後の行には、AmazonCloudwatch-linux
はAWS System Manager Parameter Storeで作成されたパラメータ名です。Amazon EKS クラスターを作成したときと同じ AWS リージョンのパラメータストアにAmazonCloudwatch-linux
を含める必要があります。ファイルパスを指定することもできますが、自動化と再利用を容易にするために Systems Manager を使用することをお勧めします。eksctl
設定ファイルでpreBootstrapCommands
を使用すると、AWS マネジメントコンソールに 2 つの起動テンプレートが表示されます。最初の起動テンプレートには、preBootstrapCommands
で指定されているコマンドが含まれています。2 番目のテンプレートには、preBootstrapCommands
で指定されているコマンドとデフォルトの Amazon EKS ユーザーデータが含まれます。このデータは、ノードをクラスターに参加させるために必要です。ノードグループの Auto Scaling グループは、このユーザーデータを使用して新しいインスタンスを起動します。eksctl
設定ファイルのiam
属性を使用する場合は、デフォルトの Amazon EKS ポリシーと、添付AWS Identity and Access Management (IAM) ポリシーに必要な追加ポリシーを一覧表示する必要があります。「eksctl 設定ファイルとクラスターの作成」ステップのコードスニペットには、CloudWatchAgentServerPolicy
とAmazonSSMMangedInstanceCore
は、CloudWatchエージェントとSSMエージェントが期待通りに動作することを確認するために追加されたポリシーです。AmazonEKSWorkerNodePolicy
、AmazonEKS_CNI_Policy
、AmazonEC2ContainerRegistryReadOnly
ポリシーは Amazon EKS クラスターが正しく機能するために必要な必須ポリシーです。