LoginSignup
15
14

More than 3 years have passed since last update.

図でわかるGetting Started with Amazon EKS

Last updated at Posted at 2019-07-20
1 / 41

はじめに

  • EKS構築でハマるという声が多かったので、某雑食系エンジニアサロンのもくもく会でGetting Started with Amazon EKSをやってみました。(クラスタ名がmokumokuになってます。適宜会社やサービス名に変更してください)
  • 可能な限りAWSコンソールからGUIでEKSクラスタを作成しています。CLIになれている人は逆に見づらい可能性があります。
  • キャプチャをとりつつハマりそうなポイントを補足したので、初心者にとってわかりやすくなっていることを祈ります。
  • 手順を1つずつ進めやすいようにQiitaのスライドで見れるよう作りました。下に長いページが多いのでスクロールが必要です。
  • 漏れやtypoがあったら遠慮なく修正リクエストください。よろしくおねがいします。

対象

  • kubernetes、EKSを始めたいAWS初心者

前提環境

  • AWSアカウントがありAWSにログインできる
  • 以下の操作権限がある
    • IAM
    • VPC
    • CloudFormation
    • EKS
    • EC2
  • AWSCLIが使える

手順

  • EKSクラスターのサービスロールを作成する
  • EKSクラスターのVPCを作成する
  • EKSクラスターを作成する
  • kubeconfigファイルを作成する
  • EC2のキーペアを作成する
  • EKSワーカーノードを起動して設定する

EKSクラスターのサービスロールを作成する


EKSを始める前に、EKSクラスタ作成時にIAMサービスロールを指定する必要があるのであらかじめ作成しておく。
AWSにログインしてIAMのロールを開く。
image.png


ロールの作成>AWSサービス>EKSを選択。
image.png


ここは特になし。
image.png


ここも特になし。
image.png


ロール名を入力して作成。
image.png


ロールが作成されたことを確認。
image.png


EKSクラスターのVPCを作成する


EKSを始める前に、EKSクラスタ作成時にVPCを指定する必要があるのであらかじめ作成しておく。
CloudFormationを開く。

image.png


CloudFormation>スタック>スタックの作成。
image.png

テンプレートURL

https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-02-11/amazon-eks-vpc-sample.yaml

スタック名を設定して次へ。
image.png


ここは特になし。
image.png


ここも特になし。スタックを作成。
image.png


スタックの作成が完了したらVPCでリソースを確認する。
CloudFormation>スタック>リソース名でも確認できる。
image.png


EKSクラスターを作成する


EKSを開いてクラスターの作成。
image.png


設定を入力して作成。ページが長いのでキャプチャ分割してます。
クラスタが作成されるのに10~15分かかります。

image.png
image.png
image.png


kubeconfigファイルを作成する


ここからはAWS CLIを使ってkubeconfigを作成します。
kubectlコマンドを使う際に対象のk8sクラスタの向き先や認証情報などを設定するファイルですね。
aws eksコマンドで作成したEKSクラスタがあるか確認する。

$ aws eks list-clusters --region ap-northeast-1
{
    "clusters": [
        "mokumoku"
    ]
}


aws eks update-kubeconfig コマンドでkubeconfigを作成する。
kubectl config view で作成したkubeconfigの設定内容を確認することが出来ます。

aws eks --region ${region} update-kubeconfig --name ${cluster_name}

例:

$ aws eks --region ap-northeast-1 update-kubeconfig --name mokumoku
Added new context arn:aws:eks:ap-northeast-1:634938955698:cluster/mokumoku to /Users/ota/.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.html

kubectlコマンドでEKSクラスタに接続できるかテスト。


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

※すでにGKEやDocker for Macなどでkubectlコマンドを使用していた場合はこのエラーが出ると思います。
エラーの記載通りaws-iam-authenticator のインストール実行してください。


注記

"aws-iam-authenticator": executable file not found in $PATH エラーが発生した場合、kubectl は、Amazon EKS に設定されていません。詳細については、「aws-iam-authenticator のインストール」を参照してください。

その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの 許可されていないか、アクセスが拒否されました (kubectl) を参照してください

Get Startedの手順には無いですが、複数のKubernetesクラスタを扱う場合はkubectxをインストールしておくと簡単にクラスタを切り替えることができとても便利なのでおすすめです。

$ kubectx
arn:aws:eks:ap-northeast-1:634938955698:cluster/mokumoku

EKSクラスタ起動直後のリソース一覧を確認。


$ kubectl get all --all-namespaces
NAMESPACE     NAME                          READY   STATUS    RESTARTS   AGE
kube-system   pod/coredns-67c9d9c78-lxtdr   0/1     Pending   0          24m
kube-system   pod/coredns-67c9d9c78-mdcd7   0/1     Pending   0          24m

NAMESPACE     NAME                 TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
default       service/kubernetes   ClusterIP   10.100.0.1    <none>        443/TCP         24m
kube-system   service/kube-dns     ClusterIP   10.100.0.10   <none>        53/UDP,53/TCP   24m

NAMESPACE     NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
kube-system   daemonset.apps/aws-node     0         0         0       0            0           <none>          24m
kube-system   daemonset.apps/kube-proxy   0         0         0       0            0           <none>          24m

NAMESPACE     NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns   0/2     2            0           24m

NAMESPACE     NAME                                DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/coredns-67c9d9c78   2         2         0       24m

EC2のキーペアを作成する


EKSワーカーノードを作成する際にEC2のキーペアを指定する必要があります。
既にAWSを運用していて設定したいEC2のキーペアがある人はこの手順を飛ばしても構いません。

EC2>キーペアを作成。
image.png

${キーペア名}.pem が作業端末にダウンロードされるので ~/.ssh とかにコピーしておく


$ cp ~/Downloads/mokumoku.pem ~/.ssh/
$ ls -l ~/.ssh/mokumoku.pem
-rw-r--r--@ 1 ota  staff  1692 Jul 15 16:28 /Users/ota/.ssh/mokumoku.pem

キーペア名を入力して作成。
image.png


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


CloudFormation>スタックの作製。
image.png


eks-nodegloupのテンプレートを設定して次へ。
image.png

# Amazon S3 URL
https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-02-11/amazon-eks-nodegroup.yaml

もろもろ設定して次へ。
image.png
image.png
image.png


ここは特になし。
image.png


IAMリソースの作成を承認して作成。EKSのワーカーノードが作成されるのを待つ。
image.png


ステータスが CREATE_COMPLETE になったら作成完了。
このあと使うので Cloudformation>スタック>出力>NodeInstanceRole の値メモっておく。
このスタックだと arn:aws:iam::634938955698:role/mokumoku-EKS-WORKER-NodeInstanceRole-1DNYLH5PVY791
image.png


ここからはCLIで作成したワーカーノードをEKSに登録する。
設定ファイルをDLしてrolearnを先ほどメモしたNodeInstanceRoleの値に書き換える。

# EKSの設定ファイルをDL
$ curl -o aws-auth-cm.yaml https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-02-11/aws-auth-cm.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
# vscodeなどエディタで編集
$ code aws-auth-cm.yaml

image.png


設定ファイルをEKSにデプロイする。

# ワーカーノードが登録されてないことを確認
$ kubectl get nodes
No resources found.

# aws-auth-cm.yamlをデプロイ
$ kubectl apply -f aws-auth-cm.yaml
configmap/aws-auth created

# 2分ほどで登録されるのでワーカーノードの登録を確認
$ kubectl get nodes 
NAME                                                 STATUS   ROLES    AGE   VERSION
ip-192-168-238-116.ap-northeast-1.compute.internal   Ready    <none>   96s   v1.12.7

EKSにワーカーノードが登録されPodをデプロイできるようになりました。


おわりに

Getting Startedの手順はここまでです。お疲れ様でした。
次のステップとしてゲストブックアプリケーションを起動するというチュートリアルが用意されています。
ぜひこちらの手順でEKSにPodやServiceをデプロイしてみてください。
よいk8sライフを。


15
14
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
15
14