Amazon EKS – AWS マネジメントコンソール および の開始方法 AWS CLI - Amazon EKS

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

Amazon EKS – AWS マネジメントコンソール および の開始方法 AWS CLI

このガイドでは、 Amazon Elastic Kubernetes Service と を使用してAmazon EKS、 (AWS マネジメントコンソール) の使用を開始するために必要なすべてのリソースを作成する方法について説明しますAWS CLI。このガイドでは、各リソースを手動で作成します。このチュートリアルの最後に、アプリケーションをデプロイできる実行中のAmazon EKSクラスターが作成されます。

このガイドの手順に従うと、各リソースがどのように作成され、リソース間でどのようにやり取りするかを全面的に把握できます。ほとんどのリソースを自動的に作成する場合は、 eksctl CLI を使用してクラスターとノードを作成します。詳細については、「 」を参照してくださいの開始方法 Amazon EKS – eksctl

Prerequisites

このチュートリアルを開始する前に、 Amazon EKS クラスターを作成および管理するために必要な以下のツールとリソースをインストールして設定する必要があります。

  • AWS CLI – を含む AWS サービスを使用するためのコマンドラインツールAmazon EKS。このガイドでは、 バージョン 2.1.26 以降、または 1.19.7 以降を使用する必要があります。詳細については、の「AWS CLI のインストール、更新、アンインストール」を参照してくださいAWS Command Line Interface ユーザーガイド。をインストールしたらAWS CLI、設定も行うことをお勧めします。詳細については、の「aws 設定を使用したクイック設定」を参照してくださいAWS Command Line Interface ユーザーガイド。

  • kubectl – Kubernetes クラスターを操作するためのコマンドラインツール。このガイドでは、 バージョン 1.19 以降を使用する必要があります。詳細については、「 」を参照してくださいのインストール kubectl

  • 必要なIAMアクセス許可 – 使用しているIAMセキュリティプリンシパルには、 Amazon EKS IAM ロールとサービスにリンクされたロールAWS CloudFormation、、および VPC および関連リソースを使用するためのアクセス許可が必要です。詳細については、の Amazon Elastic Container Service for Kubernetesアクション、リソース、および条件キー」および「サービスにリンクされたロールhttps://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.htmlの使用」を参照してくださいIAM ユーザーガイド。このガイドのすべてのステップを同じユーザーとして完了する必要があります。

ステップ 1: Amazon EKS クラスターを作成する

Amazon EKS クラスターを作成します。

重要

できるだけシンプルで迅速に開始できるように、このトピックには、デフォルト設定でクラスターとノードを作成するステップが含まれています。本稼働環境で使用するクラスターとノードを作成する前に、すべての設定に精通し、要件に合った設定でクラスターとノードをデプロイすることをお勧めします。詳細については、「Amazon EKS クラスターの作成」および「Amazon EKS 個のノード」を参照してください。

クラスターを作成するには

  1. Amazon VPC 要件を満たすパブリックサブネットとプライベートサブネットAmazon EKSを持つ を作成します。

    aws cloudformation create-stack \ --stack-name my-eks-vpc-stack \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
  2. クラスターIAMロールを作成し、必要なAmazon EKSIAM管理ポリシーをアタッチします。Amazon EKS によって管理される Kubernetes クラスターは、ユーザーに代わって他の AWS のサービスを呼び出し、サービスで使用するリソースを管理します。

    1. 次の内容を という名前のファイルcluster-role-trust-policy.jsonにコピーします。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. ロールを作成し、

      aws iam create-role \ --role-name myAmazonEKSClusterRole \ --assume-role-policy-document file://"cluster-role-trust-policy.json"
    3. 必要な Amazon EKS 管理IAMポリシーをロールにアタッチします。

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name myAmazonEKSClusterRole
  3. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

    コンソールの右上で選択したリージョンが [オレゴン] であることを確認します。そうでない場合は、リージョン名の横にあるドロップダウンを選択し米国西部 (オレゴン)us-west-2] を選択します。Amazon EKS サポートされている任意のリージョンでクラスターを作成できますが、このチュートリアルでは 米国西部 (オレゴン) us-west-2 でクラスターが作成されます。

  4. [クラスターの作成] を選択します。このオプションが表示されない場合は、[Create EKS cluster (EKS クラスターの作成)] ボックスにクラスターの名前 ( など) を入力しmy-cluster、[Next step (次のステップ)] を選択します。

  5. [Configure cluster (クラスターの設定)] ページで、クラスターの名前を入力します ( など)。my-cluster [] および [] を選択します。myAmazonEKSClusterRole クラスターサービスロールの 。残りの設定はデフォルト値のままにして、[次へ] を選択します。

  6. [Specify networking (ネットワーキングの指定)] ページで、[ vpc-00x0000x000x0x000 | my-eks-vpc-stack-VPC [VPC] ドロップダウンリストから選択します。残りの設定はデフォルト値のままにして、[次へ] を選択します。

  7. [ログ記録の設定] ページで、[次へ] を選択します。

  8. [Review and create] ページで、[Create] を選択します。

    クラスター名の右側には、クラスターのプロビジョニングプロセスが完了するまで、クラスターのステータスは [Creating (作成中)] で数分間続きます。ステータスが [Active] になるまで次のステップに進まないでください。

    注記

    リクエスト内のアベイラビリティーゾーンのいずれかに、Amazon EKS クラスターを作成するのに十分なキャパシティーがないというエラーが表示される場合があります。この場合、エラー出力には、新しいクラスターをサポートできるアベイラビリティーゾーンが含まれます。アカウント向けにサポートされているアベイラビリティーゾーンにある 2 つ以上のサブネットを使用して、クラスターを作成します。詳細については、「容量不足」を参照してください。

ステップ 2: クラスターと通信するようにコンピュータを設定する

このセクションでは、クラスターの kubeconfig ファイルを作成します。このファイルの設定によりkubectl、CLI はクラスターと通信できるようになります。

クラスターと通信するようにコンピュータを設定するには

  1. クラスターの kubeconfig ファイルを作成または更新します。必要に応じて、 を置き換えます。us-west-2 クラスターを作成したリージョンに置き換えます。

    aws eks update-kubeconfig \ --region us-west-2 \ --name my-cluster

    デフォルトではconfig、ファイルは に作成される~/.kubeか、新しいクラスターの設定が の既存のconfigファイルに追加されます~/.kube

  2. 設定をテストします。

    kubectl get svc
    注記

    その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。

    出力

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

ステップ 3: IAM OpenID Connect (OIDC) プロバイダーを作成する

ワークロードで使用される Kubernetes サービスアカウントが IAM リソースにアクセスできるように、クラスターの AWS OpenID Connect (OIDC) プロバイダーを作成します。このステップは、クラスターに対して 1 回のみ完了する必要があります。

  1. [設定] タブを選択します。

  2. [Details] セクションでOpenID Connect provider URL] の値をコピーします。

  3. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  4. ナビゲーションパネルで、[ID プロバイダー] を選択します。

  5. [プロバイダーの追加] を選択します。

  6. [プロバイダタイプ] でOpenID Connect] を選択します。

  7. [Provider URL (プロバイダー URL)] に、ステップ 2 からクラスターの OIDC プロバイダー URL を貼り付け、[Get thumbprint (サムプリントの取得)] を選択します。

  8. [対象者] にsts.amazonaws.com「」と入力し、[プロバイダーの追加] を選択します。

ステップ 4: ノードを作成する

次のいずれかのノードタイプを使用してクラスターを作成できます。各タイプの詳細については、「」Amazon EKS 個のノードを参照してください。クラスターがデプロイされたら、他のノードタイプを追加できます。

  • Fargate – Linux – で Linux アプリケーションを実行する場合は、このタイプを選択しますAWS Fargate。

  • マネージド型ノード – Linux – インスタンスでAmazon Linuxアプリケーションを実行する場合はAmazon EC2、このタイプを選択します。このガイドでは説明していませんが、Windows のセルフマネージド型ノードと Bottlerocket ノードをクラスターに追加することもできます。すべてのワークロードが Windows であっても、クラスターには少なくとも 1 つの Linux ノードが含まれている必要があります。

作成するノードタイプの名前が付いているタブを選択します。

Fargate – Linux

Fargate プロファイルを作成します。Kubernetes ポッドがプロファイルで定義された条件に一致する条件でデプロイされると、ポッドは にデプロイされますFargate。

Fargate プロファイルを作成するには

  1. IAM ロールを作成し、必要なAmazon EKSIAM管理ポリシーをそのロールにアタッチします。クラスターが Fargate インフラストラクチャでポッドを作成する場合、 Fargate インフラストラクチャで実行されているコンポーネントは、ユーザーに代わって AWS APIs を呼び出して、 からコンテナイメージをプルAmazon ECRしたり、他の AWS のサービスにログをルーティングしたりする必要があります。Amazon EKS ポッド実行ロールは、これを行うための IAM アクセス許可を提供します。

    1. 次の内容を という名前のファイルpod-execution-role-trust-policy.jsonにコピーします。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. ポッド実行IAMロールを作成します。

      aws iam create-role \ --role-name myAmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
    3. 必要な Amazon EKS 管理IAMポリシーをロールにアタッチします。

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name myAmazonEKSFargatePodExecutionRole
  2. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

  3. Fargate プロファイルを作成するクラスターを選択し、[設定] タブ、[コンピューティング] タブの順に選択します。

  4. [ Fargate プロファイル] で、[プロファイルFargateの追加] を選択します。

  5. [Configure profileFargate (プロファイルの設定)] ページで、以下の情報を入力し、[Next (次へ)] を選択します。

    1. [Name (名前)] にFargate、プロファイルの一意の名前を入力します。例: my-profile.

    2. [Pod execution role (ポッド実行ロール)] で、myAmazonEKSFargatePodExecutionRole ステップ 1 で作成した ロール。

    3. [Subnets (サブネット)] ドロップダウンを選択し、名前Publicに が含まれるサブネットをすべて選択解除します。で実行されているポッドでは、プライベートサブネットのみがサポートされていますFargate。

  6. [Configure pods selection (ポッドの設定)] ページで、以下の情報を入力し、[Next (次へ)] を選択します。

    1. [Namespace] に default と入力します。

  7. [Review and create (確認と作成)] ページで、Fargate プロファイルの情報を確認し、[Create (作成)] を選択します。

Managed nodes – Linux

マネージド型ノードグループを作成し、前のステップで作成したサブネットとノードIAMロールを指定します。

Amazon EC2 Linux マネージド型ノードグループを作成するには

  1. IAM CNI プラグインの Amazon VPC ロールを作成し、必要なAmazon EKSIAM管理ポリシーをそのロールにアタッチします。Amazon EKS Amazon VPC CNI プラグインは、デフォルトでクラスターにインストールされます。プラグインにより、Kubernetes ポッドは VPC ネットワーク上と同じ IP アドレスをポッド内に持つことができます。

    1. 以下の内容を という名前のファイルcni-role-trust-policy.jsonにコピーします。<111122223333> ( を含む<>) を アカウント ID に置き換え、 を <XXXXXXXXXX45D83924220DC4815XXXXX>/OpenID Connect プロバイダー URL の最後の値に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<111122223333>:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:aws-node" } } } ] }
    2. IAM CNI プラグインの Amazon VPC ロールを作成します。

      aws iam create-role \ --role-name myAmazonEKSCNIRole \ --assume-role-policy-document file://"cni-role-trust-policy.json"
    3. 必要な Amazon EKS 管理IAMポリシーをロールにアタッチします。

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myAmazonEKSCNIRole
  2. VPC CNI プラグインで使用される Kubernetes サービスアカウントをIAMロールに関連付けます。<111122223333> ( を含む<>) を アカウント ID に置き換えます。

    aws eks update-addon \ --cluster-name my-cluster \ --addon-name vpc-cni \ --service-account-role-arn arn:aws:iam::<111122223333>:role/myAmazonEKSCNIRole
  3. ノードIAMロールを作成し、必要なAmazon EKSIAM管理ポリシーをそれにアタッチします。Amazon EKS ノードkubeletデーモンは、ユーザーに代わって AWS APIs への呼び出しを行います。ノードはIAM、インスタンスプロファイルおよび関連するポリシーを通じて、これらの API コールのアクセス許可を受け取ります。

    1. 次の内容を という名前のファイルnode-role-trust-policy.jsonにコピーします。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. ノードIAMロールを作成します。

      aws iam create-role \ --role-name myAmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-policy.json"
    3. 必要なAmazon EKS管理IAMポリシーをロールにアタッチします。

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name myAmazonEKSNodeRole
  4. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

  5. ステップ 1: Amazon EKS クラスターを作成する」で作成したクラスターの名前 (例: ) を選択します。my-cluster.

  6. [設定] タブを選択します。

  7. [設定] タブで、[コンピューティング] タブを選択し、[ノードグループの追加] を選択します。

  8. [Configure node group (ノードグループの設定)] ページで、必要に応じてパラメータを指定し、残りのデフォルト値をそのまま使用して、[次へ] を選択します。

    • [名前] マネージド型ノードグループの一意の名前 ( など) – を入力しますmy-nodegroup

    • ノードIAMロール名 – [] を選択します。 myAmazonEKSNodeRole。 この入門ガイドでは、このロールはこのノードグループにのみ使用する必要があり、他のノードグループには使用しません。

  9. [Set compute and scaling configuration (コンピューティングとスケーリングの設定)] ページで、デフォルト値をそのまま使用して [Next (次へ)] を選択します。

  10. [Specify networking] ページで、使用する既存のキーペアSSH key pairを選択し、[Next] を選択します。キーペアがない場合は、次のコマンドを使用してキーペアを作成できます。必要に応じて、 us-west-2 をクラスターを作成したリージョンに変更します。戻り出力は、ローカルコンピュータのファイルに保存します。詳細については、「 でのキーペアhttps://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#prepare-key-pairの作成またはインポート」を参照してくださいLinux インスタンス用 Amazon EC2 ユーザーガイド。このガイドではキーは必須ではありませんが、ノードグループの作成時に使用するキーのみ指定できます。キーを指定すると、作成後にノードに SSH 接続できます。

    aws ec2 create-key-pair --region us-west-2 --key-name myKeyPair
  11. [確認と作成] ページで、マネージド型ノードグループの設定を確認し、[作成] を選択します。

  12. 数分後、[Node Group configuration (ノードグループ設定)] セクションの [Status (ステータス)] が [Creating (作成中)] から [Active (アクティブ)] に変わります。ステータスが [Active] になるまで次のステップに進まないでください。

ステップ 5: リソースを表示する

ノードと Kubernetes ワークロードを表示できます。

ノードを表示するには

  1. 左側のペインで、[クラスター] を選択し、[クラスター] のリストで、作成したクラスターの名前 ( など) を選択します。my-cluster.

  2. [Overview (概要)] タブに、クラスターにデプロイされたノードのリストが表示されます。ノードの名前を選択すると、そのノードの詳細情報を表示できます。ここで表示される内容の詳細については、「」View ノードを参照してください。

  3. クラスターの [Workloads (ワークロード)] タブに、デフォルトで Amazon EKS クラスターにデプロイされるワークロードのリストが表示されます。ワークロードの名前を選択して、詳細を表示できます。ここで表示される内容の詳細については、「」ワークロードの表示を参照してください。

ステップ 6: クラスターとノードを削除する

このチュートリアルで作成したクラスターとノードを使い終わったら、クラスターとノードを削除してクリーンアップする必要があります。このクラスターをクリーンアップする前にさらに操作を実行する場合は、「」次のステップを参照してください。

クラスターとノードを削除するには

  1. すべてのノードグループとFargateプロファイルを削除します。

    1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

    2. 左側のナビゲーションで [クラスター] を選択し、クラスターのリストで、削除するクラスターの名前を選択します。

    3. [設定] タブを選択します。[コンピューティング] タブで、以下を選択します。

      • 前のステップで作成したノードグループ。[削除] を選択します。ノードグループの名前を入力し、[Delete (削除)] を選択します。

      • 前のステップで作成した Fargate [プロファイル] で、[削除] を選択します。プロファイルの名前を入力し、[Delete (削除)] を選択します。

  2. クラスターを削除します。

    1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

    2. 削除するクラスターを選択し、[Delete (削除)] を選択します。

    3. クラスターの削除確認画面で、[Delete (削除)] を選択します。

  3. このガイドで作成した VPC AWS CloudFormation スタックを削除します。

    1. で AWS CloudFormation コンソールを開きます。。https://console.aws.amazon.com/cloudformation

    2. 削除する VPC スタックを選択し、[削除] を選択します。

    3. [スタックの削除] 確認画面で、[スタックの削除] を選択します。

  4. 作成したIAMロールを削除します。

    1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

    2. 左のナビゲーションペインで、[ロール] を選択します。

    3. を選択します。 myAmazonEKSClusterRole リストから 。[ロールの削除] を選択し、[はい、削除する] を選択します。の削除 myAmazonEKSFargatePodExecutionRole 、、または myAmazonEKSNodeRole 作成した ロールと myAmazonEKSCNIRole ロール (作成した場合には )。

次のステップ

ノードを使用するAmazon EKSクラスターが機能するようになったので、Kubernetes アドオンのインストールとクラスターへのアプリケーションのデプロイを開始する準備が整いました。以下のトピックは、クラスターの機能を拡張するのに役立ちます。

  • クラスターを作成した IAM エンティティ (ユーザーまたはロール) は、管理者 (system:masters アクセス許可を持つ) として Kubernetes RBAC 認証テーブルに追加されます。最初は、その IAM ユーザーのみが kubectl を使用して Kubernetes API サーバーを呼び出すことができます。他のユーザーにクラスターへのアクセスを許可する場合は、そのユーザーを aws-auth ConfigMap に追加する必要があります。詳細については、「クラスターのユーザーまたは IAM ロールの管理」を参照してください。

  • IMDS へのアクセスを制限する – すべての Kubernetes サービスアカウントに IAM ロールを割り当てて、ポッドが必要最小限のアクセス許可のみを持つようにする計画の場合、クラスター内のいずれのポッドにも、Amazon EC2 インスタンスメタデータサービス (IMDS) へのアクセスを必要とする他の理由 (現在のリージョンを取得するなど) がなければ、IMDS へのポッドアクセスをブロックすることをお勧めします。詳細については、「IAMサービスアカウントの ロール」および「IMDS および Amazon EC2 インスタンスプロファイルの認証情報へのアクセスの制限」を参照してください。

  • Cluster Autoscaler – ノードグループ内のノード数を自動的に調整するように Kubernetes Cluster Autoscaler を設定します。

  • Linux ワークロードのサンプルをデプロイする – サンプルの Linux アプリケーションをデプロイして、クラスターと Linux ノードをテストします。

  • クラスターの管理 – クラスターを管理するための重要なツールの使用方法について説明します。