LoginSignup
3
0

More than 5 years have passed since last update.

kubernetes aws編(EKS)

Posted at

前回に続きまして、今回はawsに環境を構築するところまで行おうと思います。
kubernetes(k8s)環境構築編

EKSはtokyoリージョンにはまだ来ていません。(2018/11/07) 来てます。(2019/01/28)

awsのよくわからない言葉

  • EKS(Elastic kubernetes Service) kubernetesのAPIを用意したawsのサービス。
  • Cloud Formation EC2のインスタンスやセキュリティグループなどを自動管理してくれるもの。
  • ECR(Elastic Continer Registry) awsのDockerのプライベートリポジトリ

しくみ

要するにCloudFormationがEC2にインスタンスを立ててくれてその上にk8sを入れてDockerを動かすよ!ってことです。(GKEも同じ)
セキュリティグループやロードバランサーまでいじってくれます。

クライアントPC(もしくはコンソールサーバ)からEKSのAPI経由で、各ノードをコントロールできます。

やること

  1. VPCにEKS用のサブネットを作成する。
  2. EKSを作る。
  3. cloudformationでいろいろ作る。
  4. EKSの認証情報をkubectlに当てる。

って感じです。

tips

aws Profileとkube configはメインのものとは別にしておくと便利

例:)
$ aws configure --profile aws-kube-test-nodes
$ export AWS_PROFILE=aws-kube-test-nodes
$ aws eks update-kubeconfig --name=test-nodes --kubeconfig=~/.kube/aws-test-nodes.conf
$ export KUBECONFIG=~/.kube/aws-test-nodes.conf

EKS用のsubnetはprivateとpublicの対で。

EKS用のsubnetはprivateとpublicのものを2本用意しておくこと。(EKSはInternet Gatewayがあるかどうかでlocalかglobalかを判断する。)

Security Groupsは専用のものを。

EKS用のSecurity Groupsは専用のものを空で用意しておく。EKS同士であっても共有しないこと。
おかしくなるよ!

VPCのEKS用のpublicサブネットに注意

既存のVPCにEKS用のサブネットを手動で作る場合には、publicとprivateの対で作成して、publicのサブネットの自動割り当て IP 設定の変更 -> パブリック IPv4 アドレスの自動割り当てを有効にするを有効にしないといけないので注意!(2つ以上のAZで作らないといけないので、最低4つのsubnetが必要になる。 https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/create-public-private-vpc.html

※チュートリアルだとCloudFormationでVPCを作っているので注意

あとからsubnetを追加するには。

EKSのsubnetやSecuryGroupsはCloudFormationと同じにしておく必要があるが、CloudFormation側を変更してもEKS側には自動で反映されない。EKSは編集できないので作り直す必要がある。EKSを作り直すとkubectlのconfigも変えないといけない。要するにめんどくさい。

※もしかしたらtagで判断しているのかも。

EKSを作るIAMユーザーとkubectlを使うユーザーは同じにすること。

参考:Amazon EKS の使用開始 - Amazon EKS
コンソールを使用してクラスターを作成する場合は、クラスター上で kubectl コマンドを実行する際、同じ IAM ユーザー認証情報が AWS SDK 認証情報チェーンにあることを確認する必要があります。

kubectl で認証が通りません。&あとから変えられない。管理ユーザーを作ってそれで作成しよう。
CLIしか使わないのであれば、管理IAMユーザーを作って aws eks create-cluster コマンドで作成しましょう。(いけてねーな)

なんていうデマが横行していますが、ちゃんとロールを設定すれば大丈夫とのことです。
クラスターのユーザーまたは IAM ロールの管理

その他

  • CloudFormationを作成するときにEKS clouster nameを入れるが、間違っていてもエラーを吐いてくれないので注意!

  • kube-systemのpodsがちゃんと立ち上がったことを確認してからいじりましょう。 $ kubectl -n kube-system get pods -o wideで確認する。

  • ECRには詳しく触れませんが、Dockerのプライベートリポジトリとawsの組み合わせも曲者です。

まとめ

  • k8sを覚えておくとawsからgcpやbluemixに移動とかしてもナレッジを活かせる。
  • コマンドやしくみが複雑すぎてk8s専任担当が必要なのでは?
  • 新しいawsみたいなのを覚えるぐらいのイメージ
  • Dockerを知っていないといけない。(まずはDockerからやったほうがいい)
  • Docker使えるとデプロイが楽になるかもしれない。(ホントかよ
  • AutoScaleまでやってくれるので構築できてしまえばaws側からいじることはほとんどない。(いじってはいけない)

まぁいいんじゃないですかね。さすがGoogle謎テクノロジーの結晶やで。。。

3
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
3
0