11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS EKSの公式チュートリアルをやってみる

Last updated at Posted at 2019-03-31

ローカル環境のKubernetesでとにかく動くものを作ってみるでローカル環境にKubernetesを立てて見たので、今回はAWSのEKSをとにかくさわってみることを目的にAWS EKSの公式チュートリアルをやって見たのでメモ。

Docker/Kubernetes 実践コンテナ開発入門にはGCPのGKEについての簡単な説明があります。
AWSのEKSについては何かないかと探したら公式チュートリアルあったのでやってみました。
つまづくところも多かったので、つまづいたところをピックアップしていきます。

公式チュートリアル

やったこと

チュートリアル にそってEKSをクラスターを作成してみました。

  • EKSクラスター作成のための下準備

    • IAMロールの作成
      • IAMユーザの作成
    • グループの作成
    • AWS EKS クラスターVPCの作成
    • Amazon EKS の kubectl をインストール
    • aws-iam-authenticatorのインストール
    • AWS Cliのインストール
    • Credentialの作成
  • EKSクラスターの作成

    • Amazon EKS クラスターを作成する
    • Amazon EKS の kubectl を設定する
    • Amazon EKS ワーカーノードを起動して設定する
    • ゲストブックアプリケーションを起動する(AWSが用意したサンプルアプリケーション)

ローカル環境にAWS系のツール等入れていなかったので、準備しなければいけないものが多かったです。
チュートリアルはやっている人が結構いるようなので、そちらの記事も参考にすると良さそう。

料金

  • EKS 0.2$/h
  • EC2インスタンス(デフォルトだと3台分。t3.nanoインスタンスで動作確認可能でした。)
  • ロードバランサ

作った後にすぐ消すのであれば、全部で5ドル以下で可能です。
チュートリアルが終わったあとは、サービスを停止できたか確認しましょう。

環境

  • ローカル環境
    • OS: Mac OS 10.13.6(High Sierra)
    • Docker for Mac: stable版 2.0.0.3
    • docker: 18.09.2
    • Kubernetes: v1.10.11
    • python: 2.7.9
  • AWS環境
    • リージョン:us-east-1

東京リージョン(ap-northeast-1)でEKSが実行できるので最初進めていましたが、EKS最適化AMIが用意されていないので注意が必要です。

EKS

IAMロールの作成

EKS-TESTというロールを作成しました。後々AWS Cli での操作が必要になるので、EKS-TESTというIAMユーザを作成しておきました。

aws-iam-authenticatorのインストール

「aws-iam-authenticator を Amazon EKS にインストールするには」 にしたがって進めていたのですが、4のコマンドを実行した際にエラーが発生しました。

$ cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$HOME/bin:$PATH

私の場合は $HOME/bin がなかったのでフォルダを作成する必要があったので、フォルダを作成して解決しました。

$ $HOME/bin/

Amazon EKS クラスターを作成する

最初はコンソール上から作成を行いました。
eks.png
作成は問題なくできたのですが、コンソールにログインするユーザを間違えると後々問題になります。エラーを回避したい場合はaws-cliで使用するのが良さそうです。画面上から色々できるかなと思ったら、クラスターを作成するぐらいしか操作できない?

Amazon EKS の kubectl を設定する

最初aws-iam-authenticatorをインストールしていなかったので、下記のコマンド実行時エラーが発生しました。

エラー
$ aws --profile=EKS-TEST eks --region us-east-1 update-kubeconfig --name EKS-TEST
Added new context  <clusterのARN>/EKS-TEST to /Users/[ユーザ名]/.kube/config
Warning: aws-iam-authenticator is not installed properly or is not in your path.
Refer to the AWS Documentation to download it at https://docs.aws.amazon.com/eks/latest/userguide/configure-kubectl.htm

aws-iam-authenticatorをインストールして、成功しました。

成功
Updated context <clusterのARN>/EKS-TEST in /Users/[ユーザ名]/.kube/config

3.のコマンドを実行した際にエラーが発生しました。

$ get svc
error: the server doesn't have a resource type "svc"

【解決方法】Amazon EKSでkubectl get svcコマンドに失敗する

原因はEKSクラスタを作成したIAMユーザとAWS CLIのIAMユーザが異なっているためでした。

EKSクラスタを画面から作成した際にルートアカウントで作成し、AWS CliではEKS-TESTユーザで作成を行っているのが原因のようだったので、EKS-TESTユーザでAWSコンソールにログインし、EKSクラスタの作成を実施。もう一度コマンドを実行して、成功しました。

$ get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   6m

Amazon EKS ワーカーノードを起動して設定する

EKSが東京リージョンで利用可能ということで、最初は東京リージョンで作業していたのですが、
NodeImageIdの選択でAWS EKS 最適化 AMI が 東京リージョンにない・・・のでバージニア北部で作り直しました。
ちなみに作成するテンプレート情報をデザイナーで見てみるとこんな感じになっています。
template.png

ワーカーノードをクラスターと結合するには

yaml:aws-auth-cm.yamlを実行する際にもエラーが発生しました。

$ kubectl apply -f aws-auth-cm.yaml
error: unable to recognize "aws-auth-cm.yaml": Get https://5DF40067B3D1F08F77EF974EE000BE9C.yl4.ap-northeast-1.eks.amazonaws.com/api?timeout=32s: dial tcp: lookup 5DF40067B3D1F08F77EF974EE000BE9C.yl4.ap-northeast-1.eks.amazonaws.com on [240d:1a:37e:6100:ce1a:faff:feb5:b064]:53: no such host

こちらものエラーは原因がわかりませんでしたが、EKS-TESTユーザでログインして何もかもやり直したらうまくいった模様。ロールの関係?コマンドの関係?

2.で別の問題が発生。コマンドを実行しても何も反応なし。

kubectl get nodes --watch

クラスタに紐づいたノードがない状態になっています。

$ kubectl get nodes
No resources found.

原因はワーカノード作成の際に、作成したクラスターの名前とClusterNameが異なっているのが原因でした。公式ドキュメントにも重要と書いていたのに見逃してしまっていました。

ClusterName: Amazon EKS クラスター用に作成した際に使用した名前を入力します。

重要
この名前は、「ステップ 1: Amazon EKS クラスターを作成する」で使用した名前と完全一致する必要があります。
それ以外の場合、ワーカーノードにクラスターを結合できません。

ゲストブックアプリケーションを起動する

ノードとクラスタが結びついていない状態(上記のエラーのまま)でも、kubectl applyを実行していると、うまくいかなかったので、delete-contextで一度全て削除を行って作成を行ったところうまくいきました。

$ kubectl config delete-context https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-controller.json

参考
https://qiita.com/hana_shin/items/b7a947511a89accea6d4

色々エラーが発生しましたが、終わりです。
image.png

11
9
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
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?