こんにちはサイオステクノロジーの前田です。 Kubernetes超初心者入門3回目として、今回はKubernetesクラスタの構築を行います。AWSのマネージドサービスのKuberneteのクラスタ構築を2回にわけてお話しします。
Kubernetesクラスター構築を通して、Kubernetesの全体像を把握していきましょう。超初心者向けに記載はしていきますが、AWSのいろいろなサービスを使うため難しいかもしれません。なるべく簡単な方法で記載していきますが、ご了承ください。
- Kubernetes 超初心者入門
目的と目標
- 目的
- Kubernetesの全体像を理解する。
- 見積もりや構成でずれが発生するのを防ぐため理解する。
- 他のKubernetesを利用したときに、差異が気づけるようになる。
- Kubernetesの全体像を理解する。
- 今回の目標
- EKSを構築してアプリケーションを外部からアクセス可能な状態にする
- クラスタを作成する。
- クラスタにアクセスする。
- EKSを構築してアプリケーションを外部からアクセス可能な状態にする
Kubernetesでアプリケーションをデプロイして利用することを優先していきます。まずはKubernetesのクラスターを構築します。AWSのマネージドサービスのEKSでクラスタを構築します。
補足
クラスタ構築時には冗長性を考える必要があります。下記考慮点があります。(今回は厳密には考慮しません)Kubernetesの構築は徐々にそれぞれ設定をしていきます。
- ネットワークの冗長
- ストレージの冗長
- アプリケーションソースの別管理
今回はネットワークの冗長性をメインとしています。超初心者入門では取り上げないですが、ストレージの冗長やアプリケーションソースの別管理等も考える必要があります。
Kubernetesを理解する時に、Dockerを理解してから対応するべきと話す人もいますが、個人的にはあまりおすすめはしません。コンテナイメージを作成すること以外でDockerを先に学習すると目的がずれてKubernetesを諦める方が多いからです。追加情報としてDockerでDocker Swarmというコンテナオーケストレーションがありますが、あまり使われていません。
EKSについて
EKSはAWSで利用できるマネージメントKubernetesです。
EKSは有料のサービスになります。EKSのコントロールプレーン(マスター)側とワーカー側で費用計算が変わります。EKSの料金というのは基本はコントロールプレーン側の料金です。ワーカーは何(Fargate、EC2等)を利用するかにより必要な料金が変わります。また、外部公開するときはELBを利用するためその料金がかかります。
★ポイント
Kubernetesの利用は料金体系も複雑になることが多いです。なるべく最初期に利用を行い費用計算を見積もるのもKubernetesを利用するコツの一つです。
構築環境
今回はAWSのVPCとIAMとEKSとEC2を主に利用して構築します。
前編では、VPCをCloudFormationで作成して、IAMのロールを作成後EKSクラスタを作成します。CloudShellを利用してクラスタにアクセスしていきます。
後編では、EKS側の機能を利用してEC2を作成して、アプリケーションをデプロイ、アプリケーションが外部からアクセスできるようにELBを作成します。
- AWS超初心者向け簡易用語説明
- VPC: ネットワークを設定&作成で主に利用
- IAM: 権限やユーザ管理等で主に利用
- EC2: サーバマシンとして主に利用
- CloudShell: Webブラウザ上で操作するコンソール
補足)構築手段について
EKSを構築する方法はいくつもあります。今回は超初心者向けのためGUIを使用した説明を行いますが、なれてきたり、利用している時だけ環境を構築する場合はCLIを利用した簡単な方法をご利用ください。
Kubernetes(EKS)クラスタの構築作業
Kubernetesクラスタの構築は早ければ1時間程度の作業です。
- 作業概要
- ネットワーク環境の構築(VPCの設定)
- 権限設定(IAMの設定)
- Kubernetesクラスター作成(EKSの作成)
- クライアント端末の設定(CloudShellの設定)
- 参考URL
ネットワーク環境の構築(VPCの設定)
パブリックとプライベート両方を利用するネットワークを構築します。
- ネットワーク作成のためCloudForamationにアクセスします。
- スタックの作成を選択
- スタックの作成 画面
- テンプレートの指定のAmazon S3 URLに記載します。
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
- 次へ を選択します。
- テンプレートの指定のAmazon S3 URLに記載します。
- スタックの詳細を指定 画面
- スタックの名前を 『 my-eks-vpc 』(任意)と入力します。
- 次へ を選択します。
- スタックオプションの設定 画面
- 次へ を選択します。
- レビュー 画面
- スタックの作成 を選択します。
- VPCが作成完了されるまで待ちます。
–
権限設定(IAMの設定)
Kubernetesのクラスタ利用のためIAMロールを設定していきます。
- AWSのIAMにアクセスします。
- ロールを選択します。
- ロールを作成 を選択します。
Kubernetesクラスター作成(EKSの作成)
上記のIAMとVPCの設定が終わりましたら、EKSのKubernetesクラスターを構築していきます。
- EKSのページにアクセスします。
- 注意事項)利用するリージョンについてはご注意ください。
- クラスターを追加 を選択します。
- 作成 を選択します。
- クラスター作成
- 構築完了確認
クライアント端末の設定(CloudShellの設定)
クライアント端末として下記ツールが利用できる状態が望ましいです。
- クライアントツール
- aws cli
- awsの様々な操作を行うことができるツール、今回はクラスターと接続するためのコンフィグファイルを作成するために利用します。
- aws cliを利用するにはアクセスキーが必要になります。
- kubectl
- kubernetesを操作するツール
- aws cli
クライアントツールの設定(CloudShellの利用)
- CloudShellの利用
- クライアントツールのインストール
- awsのツール確認のため下記を入力します。
aws --version
- バージョン情報が出ることを確認します。
- kubectlのインストールのためコマンド入力をして設定します。
- kubectlツールの取得
-
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
-
- 権限設定。
chmod +x ./kubectl
- 環境設定
-
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
-
- 動作確認
-
kubectl version --short --client
-
- kubectlツールの取得
- awsのツール確認のため下記を入力します。
- クラスターのコンフィグ取得
- aws アカウントの情報確認(接続確認)します。
aws sts get-caller-identity
- クラスターコンフィグ取得します。
- サンプル)
aws eks update-kubeconfig --region region-code --name cluster-name
- 実行例)
aws eks update-kubeconfig --region us-east-1 --name testeks
- サンプル)
- aws アカウントの情報確認(接続確認)します。
- クラスターの情報アクセス
- サービスの情報を取得可能か確認します。
-
kubectl get svc
-
- 上記のようにKubernetesのリソース情報がることを確認します。
- サービスの情報を取得可能か確認します。
クラスターを作成して、クラスターにアクセスすることができました。目標達成です。
Kubernetesクラスター削除方法
クラスター利用には料金がかかるため不必要な時は削除を行います。
- EKSにアクセスします。
- 該当クラスターを選択し 削除 を選択します。
- クラスターの名前を入力し 削除 を選択します。
おわりに
Kubernetesを構築する時には、Kubernetesの基盤となる環境の設定を複数おこなう必要があるとわかり少し疲れたのではないでしょうか?Kubernetesは初期の設定が多く、後からの変更に強い構成になっています。後になればわかることなので今はつらいかもしれませんが、利用する基盤とKubernetes両方に慣れながら操作してください。
次回、ワーカーノードの構築とアプリケーションのデプロイについてお話ししますので引き続き読んでいただければ幸いです。
- Kubernetes 超初心者入門