Day 16: EKSクラスターを構築する:eksctlとkubectlを使ってみよう 🛠️
皆さん、こんにちは!30日集中講座、Day 16へようこそ。
第3週の初日である昨日は、Kubernetesのアーキテクチャと、なぜEKSを学ぶべきなのかを理解しました。EKSは、Kubernetesの複雑なコントロールプレーンの管理をAWSに任せられる強力なサービスです。
今日は、そのEKSクラスターを実際に構築し、ローカルから操作するための準備を行います。EKSを扱うには、eksctl と kubectl という2つの重要なコマンドラインツールを使います。
1. EKSを操る2つのツール ⚙️
eksctlとkubectlは、それぞれ異なる役割を担います。
-
eksctl: EKSクラスターの作成、管理、削除を行うためのツールです。AWS公式が推奨するCLIで、クラスターの作成に必要なVPC、IAMロール、ノードグループなどを自動でセットアップしてくれます。 -
kubectl: Kubernetesクラスター内のリソース(Pod、Deploymentなど)を操作するための標準的なCLIツールです。
eksctlがクラスターという「入れ物」を作るためのツールであるのに対し、kubectlはその「入れ物の中身」を管理するためのツール、と考えるとわかりやすいでしょう。
2. 事前準備:必要なツールと権限 ⚙️
EKSクラスターの構築を始める前に、以下のツールがインストールされているか確認してください。
インストール確認
以下のコマンドでツールがインストールされているか確認してください。
# AWS CLI認証状態の確認
aws sts get-caller-identity
# ツールのバージョン確認
eksctl version
kubectl version --client
必要な権限
IAMユーザーには以下の権限が必要です。
-
EKS関連:
EKS:*,IAM:CreateRole,IAM:AttachRolePolicy -
EC2関連:
EC2:*,VPC:* -
CloudFormation関連:
CloudFormation:*
インストールが必要な場合
# macOSの場合
brew install eksctl kubectl
# Windowsの場合
choco install eksctl kubernetes-cli
3. ステップ・バイ・ステップ:EKSクラスターの構築 🚀
今日のハンズオンでは、eksctlを使ってEKSクラスターを構築し、kubectlでそのクラスターに接続するまでを行います。
⚠️ 重要な注意事項:料金とリソース削除
このコマンドでは、実際のAWSリソース(EC2インスタンスなど)が作成され、料金が発生します。t3.mediumを2台使用した場合、1日あたり約$2〜3程度の費用がかかります。学習後は必ずクラスターを削除してください。
ステップ1: eksctlでEKSクラスターを作成する
eksctlコマンドを1つ実行するだけで、EKSクラスターのインフラストラクチャが自動で作成されます。
eksctl create cluster \
--name my-eks-cluster \
--region ap-northeast-1 \
--nodegroup-name my-nodegroup \
--node-type t3.medium \
--nodes 2
このコマンドで作成されるAWSリソース:
VPC(プライベート・パブリックサブネット)、インターネットゲートウェイ、NATゲートウェイ、セキュリティグループ、IAMロール(クラスター用、ノード用)、EKSクラスター + EC2インスタンス(ワーカーノード)など、合計20個以上のリソースが自動作成されます。
完了までには15〜20分程度かかります。
ステップ2: kubectlでクラスターに接続する
クラスターの作成が完了すると、eksctlが自動でkubectlの認証情報を設定してくれます。以下のコマンドを実行して、接続が成功しているか確認しましょう。
# クラスターのノード一覧を表示
kubectl get nodes
成功すると、以下のような出力が表示されます。
NAME STATUS ROLES AGE VERSION
ip-192-168-xx-xx.ap-northeast-1.compute.internal Ready <none> 2m v1.30.x
ip-192-168-xx-xx.ap-northeast-1.compute.internal Ready <none> 2m v1.30.x
もし接続がうまくいかない場合は、以下のコマンドで認証情報を更新できます。
# kubectlの認証情報を更新
aws eks update-kubeconfig --name my-eks-cluster --region ap-northeast-1
これで、ローカルのPCからEKSクラスターを操作する準備が整いました。
4. トラブルシューティング 🔧
よくあるエラーと対処法:
-
権限エラー(AccessDenied)
-
aws sts get-caller-identityで認証状態を確認 - IAMユーザーの権限(EKS, EC2, VPC, CloudFormation)を確認
-
-
リージョンエラー
-
aws configure listで設定を確認 - 指定したリージョンでEKSがサポートされているか確認
-
-
クラスター作成が失敗した場合
-
eksctl delete cluster --name my-eks-clusterを実行し、失敗したリソースを削除
-
-
ノードがReadyにならない
- セキュリティグループの設定(ノードとコントロールプレーン間の通信)を確認
- CloudFormationのイベントログで詳細なエラーを確認
5. まとめ:今日の成果と明日への準備 🎯
今日達成したこと:
- EKSクラスターの作成(約20個のAWSリソース)
-
kubectlによるクラスター接続の確認 - EKS運用の基本的なワークフロー理解
🔒 セキュリティのポイント
今回作成されたクラスターはパブリックサブネット内のノードを含むため、セキュリティグループの設定を確認することを推奨します。本番環境では、プライベートサブネットのみを使用することが一般的です。
💰 費用を抑えるコツ
学習中でない時間は以下で費用を削減できます。
# ノードのみ停止(コントロールプレーン料金は継続)
eksctl scale nodegroup --cluster=my-eks-cluster --name=my-nodegroup --nodes=0
# 再開時
eksctl scale nodegroup --cluster=my-eks-cluster --name=my-nodegroup --nodes=2
# 全てのリソースを削除
eksctl delete cluster --name my-eks-cluster --region ap-northeast-1
次回の予告
Day 17: Pod, ReplicaSet, Deployment:Kubernetesの基本リソースを使いこなす
それでは、また明日お会いしましょう!