1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「Dockerはわかるけど…」から卒業!AWSでコンテナを動かすための30日集中講座 - Day 16: EKSクラスターを構築する:eksctlとkubectlを使ってみよう

Posted at

Day 16: EKSクラスターを構築する:eksctlkubectlを使ってみよう 🛠️

皆さん、こんにちは!30日集中講座、Day 16へようこそ。

第3週の初日である昨日は、Kubernetesのアーキテクチャと、なぜEKSを学ぶべきなのかを理解しました。EKSは、Kubernetesの複雑なコントロールプレーンの管理をAWSに任せられる強力なサービスです。

今日は、そのEKSクラスターを実際に構築し、ローカルから操作するための準備を行います。EKSを扱うには、eksctlkubectl という2つの重要なコマンドラインツールを使います。


1. EKSを操る2つのツール ⚙️

eksctlkubectlは、それぞれ異なる役割を担います。

  • 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. トラブルシューティング 🔧

よくあるエラーと対処法:

  1. 権限エラー(AccessDenied)
    • aws sts get-caller-identityで認証状態を確認
    • IAMユーザーの権限(EKS, EC2, VPC, CloudFormation)を確認
  2. リージョンエラー
    • aws configure listで設定を確認
    • 指定したリージョンでEKSがサポートされているか確認
  3. クラスター作成が失敗した場合
    • eksctl delete cluster --name my-eks-clusterを実行し、失敗したリソースを削除
  4. ノードが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の基本リソースを使いこなす

それでは、また明日お会いしましょう!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?