このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
Amazon EKS クラスターを作成します。
このトピックでは、使用可能なオプションの概要と、Amazon EKS クラスターの作成時に考慮すべき点を説明します。AWS Outpost でクラスターを作成する必要がある場合は、「高可用性を実現するために AWS Outposts でローカル Amazon EKS クラスターを作成する」を参照してください。Amazon EKS クラスターを初めて作成する場合は、Amazon EKS の使用を開始する ガイドのいずれかに従うことをお勧めします。これらのガイドは、使用可能なすべてのオプションを展開することなく、シンプルでデフォルトのクラスターを作成するのに役立ちます。
前提条件
-
Amazon EKS の要件 を満たす既存の VPC とサブネット。本番用にクラスターをデプロイする前に、VPC とサブネットの要件を十分に理解しておくことをお勧めします。VPC とサブネットがない場合は、Amazon EKS に用意されている AWS CloudFormation テンプレート を使用して作成できます。
-
デバイスまたは AWS CloudShell に、
kubectl
コマンドラインツールがインストールされていること。バージョンは、ご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが1.30
である場合、kubectl
のバージョン1.29
、1.30
、または1.31
が使用できます。kubectl
をインストールまたはアップグレードする方法については、「kubectl および eksctl のセットアップ」を参照してください。 -
ご使用のデバイスまたは AWS CloudShell で、バージョン
2.12.3
以降、または AWS Command Line Interface (AWS CLI) のバージョン1.27.160
以降がインストールおよび設定されていること。現在のバージョンを確認するには、「
」を参照してください。macOS のaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
、apt-get
、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS Command Line Interface ユーザーガイド」の「AWS CLI のインストール、更新、およびアンインストール」と「aws configure でのクイック設定」を参照してください。AWS CloudShell にインストールされている AWS CLI バージョンは、最新バージョンより数バージョン遅れている可能性もあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。 -
Amazon EKS クラスターを
create
およびdescribe
するための許可を持つ IAM プリンシパル。詳細については、Outpost にローカル Kubernetes クラスターを作成しますおよびすべてのクラスターの一覧表示または説明を参照してください。
Amazon EKS クラスターを作成するには
-
既にクラスター IAM ロールがある場合、または
eksctl
を使用してクラスターを作成する場合は、このステップはスキップできます。デフォルトでは、eksctl
により、ロールが自動的に作成されます。Amazon EKS クラスター IAM ロールを作成するには
-
IAM 信頼ポリシー用の JSON ファイルを作成するには、次のコマンドを実行します。
cat >
eks-cluster-role-trust-policy.json
<<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
Amazon EKS クラスターの IAM ロールを作成します。必要であれば、前のステップでファイルを書き込んだコンピュータ上のパスを
eks-cluster-role-trust-policy.json
の前につけます。このコマンドは、前のステップで作成した信頼ポリシーをロールに関連付けます。IAM ロールを作成するには、ロールを作成する IAM プリンシパルにiam:CreateRole
アクション (許可) を割り当てる必要があります。aws iam create-role --role-name
myAmazonEKSClusterRole
--assume-role-policy-document file://"eks-cluster-role-trust-policy.json
" -
Amazon EKS 管理のポリシーを割り当てるか、独自のカスタムポリシーを作成できます。カスタムポリシーで使用する必要がある最小限の許可については、「Amazon EKS クラスター の IAM ロール」を参照してください。
このロールに、Amazon EKS 管理の IAM ポリシー (
AmazonEKSClusterPolicy
) をアタッチします。IAM ポリシーを IAM プリンシパルにアタッチするには、ポリシーのアタッチを行っているプリンシパルに、次のいずれかの IAM アクション (許可) を割り当てる必要があります:iam:AttachUserPolicy
またはiam:AttachRolePolicy
。aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name
myAmazonEKSClusterRole
-
-
Amazon EKS クラスターを作成します。
eksctl
、AWS Management Console、または AWS CLI を使用してクラスターを作成できます。 -
eksctl
を使用してクラスターを作成した場合、このステップはスキップできます。eksctl
によってこのステップはすでに完了しているからです。新しいコンテキストをkubectl
config
ファイルに追加して、kubectl
がクラスターと通信できるようにします。ファイルを作成および更新する方法の詳細については、「kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する」を参照してください。aws eks update-kubeconfig --region
region-code
--namemy-cluster
出力例は次のとおりです。
Added new context arn:aws:eks:
region-code
:111122223333
:cluster/my-cluster
to/home/username/
.kube/config -
次のコマンドを実行して、クラスターとの通信を確認します。
kubectl get svc
出力例は次のとおりです。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h
-
(推奨) Amazon EKS アドオンを使用するか、固有の AWS Identity and Access Management (IAM) アクセス許可を個々の Kubernetes ワークロードに付与できるようにするには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーを作成します。クラスター用に IAM OIDC プロバイダーを作成する必要があるのは 1 回だけです。Amazon EKS アドオンの詳細については、「Amazon EKS アドオン」を参照してください。ワークロードに特定の IAM アクセス許可を割り当てる方法については、「サービスアカウントの IAM ロール」を参照してください。
-
(推奨) Amazon EC2 ノードをクラスターにデプロイする前に Amazon VPC CNI plugin for Kubernetes プラグイン用にクラスターを設定します。デフォルトでは、プラグインはクラスターとともにインストールされています。Amazon EC2 ノードをクラスターに追加すると、プラグインは追加する各 Amazon EC2 ノードに自動的にデプロイされます。プラグインでは、次の IAM ポリシーのいずれかを IAM ロールにアタッチする必要があります。
AmazonEKS_CNI_Policy
マネージド IAM ポリシー-
クラスターが
IPv4
ファミリーを使用している場合 - ユーザーが作成する IAM ポリシー
-
クラスターが
IPv6
ファミリーを使用している場合
ポリシーをアタッチする IAM ロールは、ノード IAM ロール、またはプラグインにのみ使用される専用ロールです。このロールにポリシーをアタッチすることをお勧めします。ロールの作成の詳細については、「IRSA を使用するように Amazon VPC CNI プラグインを設定する」または「Amazon EKS ノードの IAM ロール」を参照してください。
-
AWS Management Console を使用してクラスターをデプロイした場合、このステップはスキップできます。AWS Management Console では、デフォルトで、Amazon VPC CNI plugin for Kubernetes、CoreDNS、および
kube-proxy
Amazon EKS アドオンがデプロイされます。eksctl
または AWS CLI のいずれかを使用してクラスターをデプロイする場合、Amazon VPC CNI plugin for Kubernetes、CoreDNS、およびkube-proxy
セルフマネージド型アドオンがデプロイされます。クラスターとともに Amazon EKS アドオンにデプロイされる Amazon VPC CNI plugin for Kubernetes、CoreDNS、およびkube-proxy
セルフマネージド型アドオンを移行できます。詳細については、「Amazon EKS アドオン」を参照してください。 -
(任意) まだそのようにしていない場合は、クラスターの Prometheus メトリクスを有効にできます。詳細については、「Amazon Managed Service for Prometheus ユーザーガイド」の「スクレイパーの作成」を参照してください。
-
Prometheus メトリクスを有効にした場合は、
aws-auth
ConfigMap
スクレイパーにクラスター内のアクセス権限を付与するように設定する必要があります。詳細については、「Amazon Managed Service for Prometheus ユーザーガイド」の「Amazon EKS クラスターの設定」を参照してください。 -
Amazon EBS ボリュームを使用するクラスターにワークロードをデプロイする予定で、
1.23
以降のクラスターを作成した場合、ワークロードをデプロイする前に、Amazon EBS を利用して Kubernetes ボリュームを保存する をクラスターにインストールする必要があります。
推奨される次の手順は以下の通りです。
-
クラスターを作成した IAM プリンシパルは、クラスターにアクセスできる唯一のプリンシパルです。他の IAM プリンシパルに許可を付与して、クラスターにアクセスできるようにします。
-
クラスターを作成した IAM プリンシパルが、前提条件で参照されている最低限の IAM 許可しか持たない場合、そのプリンシパルに Amazon EKS 許可を追加することができます。Amazon EKS 許可を IAM プリンシパルに付与する方法については、「Amazon EKS の Identity and Access Management」を参照してください。
-
クラスターを作成した IAM プリンシパル、またはその他のプリンシパルに Amazon EKS コンソールで Kubernetes リソースを表示させる場合は、必要なアクセス許可 をエンティティに付与します。
-
ノードと IAM プリンシパルが VPC 内からクラスターにアクセスできるようにする場合、クラスターのプライベートエンドポイントを有効にします。デフォルトでは、パブリックエンドポイントは有効です。プライベートエンドポイントを有効にした後、必要に応じてパブリックエンドポイントを無効にできます。詳細については、「クラスター API サーバーエンドポイントへのネットワークアクセスを制御する」を参照してください。