Kubernetes超初心者入門 3. EKS構築 前編 考えるよりも行動が大切です。

こんにちはサイオステクノロジーの前田です。 Kubernetes超初心者入門3回目として、今回はKubernetesクラスタの構築を行います。AWSのマネージドサービスのKuberneteのクラスタ構築を2回にわけてお話しします。

Kubernetesクラスター構築を通して、Kubernetesの全体像を把握していきましょう。超初心者向けに記載はしていきますが、AWSのいろいろなサービスを使うため難しいかもしれません。なるべく簡単な方法で記載していきますが、ご了承ください。

目的と目標

  • 目的
    • Kubernetesの全体像を理解する。
      • 見積もりや構成でずれが発生するのを防ぐため理解する。
      • 他のKubernetesを利用したときに、差異が気づけるようになる。
  • 今回の目標
    • 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の設定)

 

ネットワーク環境の構築(VPCの設定)

パブリックとプライベート両方を利用するネットワークを構築します。

  1. ネットワーク作成のためCloudForamationにアクセスします。
  2. スタックの作成を選択
  3. スタックの作成 画面
    1. テンプレートの指定のAmazon S3 URLに記載します。
      • https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
    2. 次へ を選択します。
  4. スタックの詳細を指定 画面
    1. スタックの名前を 『 my-eks-vpc 』(任意)と入力します。
    2. 次へ を選択します。
  5. スタックオプションの設定 画面
    1. 次へ を選択します。
  6. レビュー 画面
    1. スタックの作成 を選択します。
  7. VPCが作成完了されるまで待ちます。
    1. 適度に更新ボタンを押します。
    2. 画面左側で『CREATE_COMPLETE』と表示されれば完了です。 

  –

権限設定(IAMの設定)

Kubernetesのクラスタ利用のためIAMロールを設定していきます。

  1. AWSのIAMにアクセスします。
  2. ロールを選択します。
  3. ロールを作成 を選択します。
    1. 信頼されたエンティティを選択 画面
      1. ユースケースで他のAWSのサービスユースケースからEKSを選択します。
      2. EKS-Clusterを選択します。
      3. 次へ を選択します。
    2. 許可を追加 画面
      1. 次へ を選択します。
    3. 名前、確認、および作成 画面
      1. ロール名 『 testeksclusterrole 』と入力します。
      2. ロールを作成 を選択します。
    4. ロールの作成完了確認
      • 画面上部に作成完了が表示されるのを待ちます。

Kubernetesクラスター作成(EKSの作成)

上記のIAMとVPCの設定が終わりましたら、EKSのKubernetesクラスターを構築していきます。

  1. EKSのページにアクセスします。
    1. 注意事項)利用するリージョンについてはご注意ください。
  2. クラスターを追加 を選択します。
    1. 作成 を選択します。
  3. クラスター作成
    1. クラスターを設定 画面
      1. 名前を『 testeks 』と入力します
      2. クラスターサービスロールで先ほど作成したロール『testeksclusterrole』を選択します。
      3. 次へを選択します。
    2. ネットワーキングを指定 画面
      1. ネットワーキングのVPCで、作成した『my-eks-vpc』と記載のあるVPCを選択します。
      2. クラスターエンドポイントで パブリックおよびプライベート を選択します。
      3. 次へ を選択します。
    3. ログ記録の設定 画面
      1. 次へ を選択します。
    4. 確認及び作成 画面
      1. 作成 を選択します。
      2. クラスターが構築されるのにしばらくかかるので待ちます。
        • 更新ボタンを押して状態を確認します。
        • 待っている間にクライアント端末の設定等をすることをお勧めします。
  4. 構築完了確認
    1. ステータスがアクティブと表示されたらクラスターの構築は完了です。
    2. クラスターのKubernetesのリソースを確認します。
      1. リソースタブ、サービスとネットワーキング、サービスの内容を確認します。
      2. kubernetes があることを確認します。

クライアント端末の設定(CloudShellの設定)

クライアント端末として下記ツールが利用できる状態が望ましいです。

  • クライアントツール
    • aws cli
      • awsの様々な操作を行うことができるツール、今回はクラスターと接続するためのコンフィグファイルを作成するために利用します。
      • aws cliを利用するにはアクセスキーが必要になります。
    • kubectl
      • kubernetesを操作するツール

クライアントツールの設定(CloudShellの利用)

  1. CloudShellの利用
    1. 画面右上のベルの左のコンソールマークからクラウドシェルの利用開始します。
    2. 初回はウェルカムメッセージが表示されるので Close を押下します。
  2. クライアントツールのインストール
    1. awsのツール確認のため下記を入力します。
      • aws --version
      • バージョン情報が出ることを確認します。
    2. kubectlのインストールのためコマンド入力をして設定します。
      1. kubectlツールの取得
        • curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
      2. 権限設定。
        chmod +x ./kubectl
      3. 環境設定
        • mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
      4. 動作確認
        • kubectl version --short --client
  3. クラスターのコンフィグ取得
    1. aws アカウントの情報確認(接続確認)します。
      • aws sts get-caller-identity
    2. クラスターコンフィグ取得します。
      • サンプル)aws eks update-kubeconfig --region region-code --name cluster-name
      • 実行例)aws eks update-kubeconfig --region us-east-1 --name testeks
  4. クラスターの情報アクセス
    1. サービスの情報を取得可能か確認します。 
      • kubectl get svc
    2. 上記のようにKubernetesのリソース情報がることを確認します。

クラスターを作成して、クラスターにアクセスすることができました。目標達成です。

Kubernetesクラスター削除方法

クラスター利用には料金がかかるため不必要な時は削除を行います。

  1. EKSにアクセスします。
  2. 該当クラスターを選択し 削除 を選択します。
  3. クラスターの名前を入力し 削除 を選択します。

おわりに

Kubernetesを構築する時には、Kubernetesの基盤となる環境の設定を複数おこなう必要があるとわかり少し疲れたのではないでしょうか?Kubernetesは初期の設定が多く、後からの変更に強い構成になっています。後になればわかることなので今はつらいかもしれませんが、利用する基盤とKubernetes両方に慣れながら操作してください。

次回、ワーカーノードの構築とアプリケーションのデプロイについてお話ししますので引き続き読んでいただければ幸いです。

 

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です