EKSコントロールプレーンとワーカーノード
EKSコントロールプレーンでAWSが管理する範囲を理解し、マネージドノードグループをプロビジョニングして、kubectlをクラスターに接続します。
「EKSコントロールプレーンとワーカーノード」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
Amazon EKS とは
Amazon Elastic Kubernetes Service (EKS)は、Kubernetes コントロールプレーンのインストール、運用、保守の負担を取り除く、フルマネージドの Kubernetes サービスです。AWS は複数の Availability Zone にわたってコントロールプレーンを実行、スケーリング、アップグレードし、高可用性のクラスターエンドポイントを提供します。利用者はアプリケーションワークロードのデプロイと管理に専念できます。
EKS コントロールプレーン
EKS コントロールプレーンは、API サーバー、etcd、コントローラーマネージャー、スケジューラーで構成され、すべて AWS によって管理されます。これらのコンポーネントは AWS 所有のアカウントで実行されるため、利用者が SSH 接続することはありません。AWS は EKS API エンドポイントに対して99.95% SLAを保証し、異常なコントロールプレーンノードを自動的に置き換えます。コントロールプレーンには、クラスター単位・時間単位の固定料金がかかります。
EKS クラスターの作成
AWS コンソール、eksctl、または CloudFormation を使用して EKS クラスターを作成できます。クラスターには、少なくとも 2 つの AZ にまたがるサブネットを持つ VPCと、Kubernetes コントロールプレーンに AWS API の呼び出しを許可する IAM ロールが必要です。作成後、クラスターエンドポイントは kubeconfig に設定する HTTPS URL になります。
# Create a cluster with eksctl (recommended for getting started)
eksctl create cluster \
--name my-cluster \
--region us-east-1 \
--version 1.29 \
--nodegroup-name standard-nodes \
--node-type m5.large \
--nodes 3 \
--nodes-min 1 \
--nodes-max 5kubectl を EKS に接続する
クラスターを作成したら、ローカルのkubeconfigを更新して、kubectlが EKS API サーバーへの接続方法を認識できるようにします。AWS CLI が必要なエントリを自動的に生成します。EKS API サーバーはAWS IAM による認証を使用します。IAM ユーザーまたはロールは、aws-auth ConfigMap を介して Kubernetes RBAC ID にマッピングされます。
# Update kubeconfig for your EKS cluster
aws eks update-kubeconfig \
--region us-east-1 \
--name my-cluster
# Verify connectivity
kubectl get nodes
kubectl get pods --all-namespacesマネージドノードグループ
マネージドノードグループを使用すると、AWS が EC2 ワーカーノードのプロビジョニング、登録、ライフサイクル管理を代行します。更新または置き換えを要求すると、EKS はポッドを自動的にドレインし、インスタンスを置き換えて再登録します。手動操作は必要ありません。マネージドノードグループは内部でAuto Scaling Groupsを使用するため、最小・最大・希望キャパシティの制御や Cluster Autoscaler との統合が可能です。
# Add a managed node group to an existing cluster
eksctl create nodegroup \
--cluster my-cluster \
--region us-east-1 \
--name high-mem-nodes \
--node-type r6i.large \
--nodes 2 \
--nodes-min 1 \
--nodes-max 10 \
--managedセルフマネージドノードグループ
セルフマネージドノードグループでは、利用者自身が(CloudFormation または Terraform を使用して)EC2 インスタンスを起動し、ブートストラップスクリプトを実行して EKS クラスターに登録します。これにより最大限の柔軟性が得られ、カスタム AMI、GPU インスタンスタイプ、高度にカスタマイズしたカーネル設定などを利用できます。ただし、ノードのパッチ適用、ドレイン、置き換えについてはすべて利用者が責任を負います。
# Bootstrap script baked into the launch template
/etc/eks/bootstrap.sh my-cluster \
--apiserver-endpoint 'https://EXAMPLE.gr7.us-east-1.eks.amazonaws.com' \
--b64-cluster-ca 'BASE64_ENCODED_CA' \
--kubelet-extra-args '--node-labels=role=custom'ノード IAM ロールとインスタンスプロファイル
すべてのワーカーノードは、次の 3 つの AWS 管理ポリシーを持つEC2 インスタンスプロファイルで実行する必要があります。AmazonEKSWorkerNodePolicy、AmazonEKS_CNI_Policy、AmazonEC2ContainerRegistryReadOnlyです。これらにより、ノードはクラスターへの参加、VPC CNI プラグインによるポッドネットワークの管理、ECR からのイメージの取得を行えます。これらのポリシーがない場合、ノードは登録に失敗します。
# Attach required policies to the node role
aws iam attach-role-policy \
--role-name EKSNodeRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
aws iam attach-role-policy \
--role-name EKSNodeRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
aws iam attach-role-policy \
--role-name EKSNodeRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnlyaws-auth ConfigMap:IAM と RBAC のマッピング
EKS は、kube-system名前空間のaws-auth ConfigMapを使用して、IAM ユーザーとロールを Kubernetes のユーザー名およびグループにマッピングします。クラスターを作成した時点では、作成者の IAM ID のみが自動的に管理者アクセス権を付与されます。他のユーザーや CI/CD ロールからクラスターへアクセスできるようにするには、正しいmapRolesまたはmapUsersキーを使用して、この ConfigMap にエントリを追加する必要があります。
# View and edit the aws-auth ConfigMap
kubectl describe configmap aws-auth -n kube-system
# Add a role mapping (example YAML fragment)
# mapRoles:
# - rolearn: arn:aws:iam::111122223333:role/EKSNodeRole
# username: system:node:{{EC2PrivateDNSName}}
# groups:
# - system:bootstrappers
# - system:nodesEKS アドオンとクラスターのアップグレード
EKS アドオンは、VPC CNI、CoreDNS、kube-proxy など、AWS が選定して検証したソフトウェアコンポーネントです。EKS はこれらを利用者に代わってインストールし、最新の状態に保てます。クラスターの Kubernetes バージョンをアップグレードする場合は、まずコントロールプレーンを更新し、その後、一致するバージョンへ各マネージドノードグループを更新します。EKS では、ロールアウト期間中、コントロールプレーンとノードの間で N-1 のマイナーバージョン差をサポートしています。
# List available add-ons and their versions
aws eks describe-addon-versions \
--kubernetes-version 1.29 \
--query 'addons[].{Name:addonName,Versions:addonVersions[0].addonVersion}' \
--output table
# Update the VPC CNI add-on
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version v1.16.0-eksbuild.1EKS のセキュリティ:エンドポイントアクセスと暗号化
EKS API サーバーのエンドポイントは、パブリックのみ、プライベートのみ、またはその両方に設定できます。パブリックエンドポイントは IAM 認証によって保護されます。プライベートのみのエンドポイントでは、kubeconfig が VPN または Direct Connect 経由で VPC に到達できる必要があります。また、AWS KMS キーを使用して、保存時の Kubernetes シークレットに対するエンベロープ暗号化を有効にすることもできます。これにより、機密性の高い設定データをさらに保護できます。
# Enable private endpoint and envelope encryption at cluster creation
aws eks create-cluster \
--name secure-cluster \
--kubernetes-version 1.29 \
--role-arn arn:aws:iam::111122223333:role/EKSClusterRole \
--resources-vpc-config subnetIds=subnet-xxx,securityGroupIds=sg-xxx,endpointPublicAccess=false,endpointPrivateAccess=true \
--encryption-config '[{"provider":{"keyArn":"arn:aws:kms:us-east-1:111122223333:key/KEY_ID"},"resources":["secrets"]}]'EKS の Cluster Autoscaler
Cluster Autoscalerは、スケジュール不能なポッドを監視し、マネージドノードグループの Auto Scaling Groups のサイズを自動的に調整する Kubernetes ポッドです。リソース不足によってポッドをスケジュールできない場合、Cluster Autoscaler はスケールアップします。ノードの使用率が低く、そのポッドを別の場所で再スケジュールできる場合は、スケールダウンします。IRSA を介して EC2 Auto Scaling API を呼び出すための IAM 権限が必要です。
# Deploy Cluster Autoscaler (abbreviated)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
# Add required annotation so it discovers your cluster ASGs
kubectl annotate serviceaccount cluster-autoscaler \
-n kube-system \
eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/ClusterAutoscalerRole理解度チェック
このレッスンで学んだ AWS Solutions Architect (SAA-C03) の概念について、理解度を確認します。
レッスンのまとめ
このレッスンでは、AWS が EKS のコントロールプレーンを管理することで 99.95% の SLA を実現すること、マネージドノードグループでは AWS がノードのライフサイクルを処理する一方、セルフマネージドノードグループでは最大限のカスタマイズが可能であること、そしてaws-auth ConfigMapによって IAM アイデンティティが Kubernetes RBAC にマッピングされ、クラスターへのアクセスを制御できることを学びました。次は、サーバーレスな Pod 実行を実現する Fargate プロファイルについて学びます。
よくある質問
「EKSコントロールプレーンとワーカーノード」レッスンは無料ですか?
はい。「EKSコントロールプレーンとワーカーノード」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「EKSコントロールプレーンとワーカーノード」で何を学びますか?
EKSコントロールプレーンでAWSが管理する範囲を理解し、マネージドノードグループをプロビジョニングして、kubectlをクラスターに接続します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「EKSコントロールプレーンとワーカーノード」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- EKSコントロールプレーンとワーカーノード
- サーバーレスポッド向けFargateプロファイル
- EKSネットワーキング:VPC CNIとロードバランシング
- サービスアカウントのIAMロール(IRSA)