Slide 1

Slide 1 text

今こそ振り返る EKSの基礎 そしてあなたは 今⽇ EKSを完全に理解する…

Slide 2

Slide 2 text

2 ⾃⼰紹介 濱⽥孝治(ハマコー) •クラスメソッド(株) •AWS事業本部コンサルティング部 •好きなサービス •ECS、EKS、CloudFormation

Slide 3

Slide 3 text

3 @hamako9999 ハマコー

Slide 4

Slide 4 text

4 #jawsug #jawsug_ct

Slide 5

Slide 5 text

5 今⽇のイベントにおける登壇の位置付け 19:00 - 19:20 今こそ振り返るEKSの基礎 濱⽥孝治 / クラスメソッド AWS事 業本部コンサルティング部 19:20 - 19:45 コンテナうまみつらみ〜Kubernetes初⼼ 者がEKSと格闘した1年を振り返る〜 多⽥ 吉克(Tada Yoshikatsu) - エ ンジニア, (株)いい⽣活 サービス プラットフォーム開発部 19:50 - 20:15 Kubernetesをめぐる冒険 坂本 諒 / Chatwork 20:15 - 20:40 OSSから理解するEKSとそのエコシステ ムについて 太⽥ 航平(Kohei Ota/inductor) - ZOZOテクノロジーズ MLOpsチーム エンジニア 20:45 - 21:15 スーパー LT タイム LT✕5本

Slide 6

Slide 6 text

6 EKSの基礎ってなんやねん︖

Slide 7

Slide 7 text

7 昔の俺 ⾃分のEKSの始め⽅

Slide 8

Slide 8 text

8 ⾃分のEKSの始め⽅ 1. kubernetes触りたい 2. どこでやろ。やっぱり慣れてるからAWSつかうか 3. eksctl、マジ神︕ 4. [kubectl apply]で、コンテナできた︕環境できたの で、kubernetes本の内容試してみるで︕ 5. kubernetesおもろいやん︕ワッショイワッショイ!!

Slide 9

Slide 9 text

9 こんなイメージ eksctl kubernetesオモロイなぁ Amazon EC2 Elastic Load Balancing (ELB)

Slide 10

Slide 10 text

10 実際 eksctl で、これなにやってるんやろ︖ Amazon EC2 Elastic Load Balancing (ELB)

Slide 11

Slide 11 text

11 https://eksctl.io/

Slide 12

Slide 12 text

12 eksctl create clusterで出来上がるAWSリソース $ eksctl create cluster • EKS ControlPlane • VPC, InternetGateway, route table, subnet, EIP, NAT Gateway, security group • IAM Role, Policy • node group, Worker node(EC2) • 〜/.kube/config これだけのリソースが、たったあ れだけのコマンドで出来上がる 驚き

Slide 13

Slide 13 text

13 めちゃくちゃ便利なだけに eksctlを使っているだけだと AWSのリソースに対する理解が 深まらない

Slide 14

Slide 14 text

14 EKS運⽤するにあたり出てきそうなあるあるネタ あなたはこれらの運⽤に即座に対応できるでしょうか︖ • クラスターのアップデート、実際どないしよ • クラスター触れる⼈を増やしたい • 既存のクラスターVPCに別のクラスターを接続させたい • ノードグループを複数VPCに展開したい • NAT Gateway⾼いからInternetGatewayだけにしたい • コントロールプレーンとワーカーノードを別AWSアカウントで管理 したい • 2AZのVPCを3AZに拡張したい。もちろんノードも使いたい

Slide 15

Slide 15 text

15 あらためて感じた あーなんもわかってないわ

Slide 16

Slide 16 text

16 EKSの開始⽅法は⼤きく分けて2つ ① eksctlを使う ② コンソールを使う できることは同じだがこちらはステッ プバイステップでポチポチ作っていく

Slide 17

Slide 17 text

17 基本の流れはこちらにあります https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/getting-started-console.html

Slide 18

Slide 18 text

18 今⽇の趣旨 eksctl EKSをもっと⻑きに渡っ て運⽤するためにはここ をきちんと理解する必要 がある Amazon EC2 Elastic Load Balancing (ELB)

Slide 19

Slide 19 text

19 Agenda • コンソールによるEKSの開始⽅法の解説 ① Amazon EKSサービスロール作成 ② EKSクラスターVPCの作成 ③ EKSクラスターの作成 ④ kubeconfigの設定 ⑤ マネージド型ノードグループの起動 • オススメのEKS学習マテリアル

Slide 20

Slide 20 text

20 ①Amazon EKS サービスロールの作成

Slide 21

Slide 21 text

21 EKSクラスターが利⽤するサービスロールを作成 • EKSクラスターが他のAWSリソースに対してアクセスするた めのロールを作成。必須のAWSマネージドポリシーは2つ • AmazonEKSServicePolicy • EKSがKubernetesクラスタを作成〜運⽤するためのポリシー • 例)クラスターログの転送(logs:PutLogEvents) • 例)VPCに作成するENI(ec2:CreateNetworkInterface) • AmazonEKSClusterPolicy • KubernetesクラスタのコントロールプレーンがAWSリソースを 操作するためのポリシー • 例)autoscaling,ec2,elasticloadbalancing

Slide 22

Slide 22 text

22 それぞれのポリシーの位置付け EKS Amazon EC2 Elastic Load Balancing (ELB) AmazonEKSServicePolicy AmazonEKSClusterPolicy

Slide 23

Slide 23 text

23 公式ドキュメント(IAMロール) https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/service_IAM_role.html

Slide 24

Slide 24 text

24 深夜のリプ合戦も参考になるよ︕ https://twitter.com/hamako9999/status/1219987231256924161

Slide 25

Slide 25 text

25 ②EKSクラスターVPCの作成

Slide 26

Slide 26 text

26 Amazon EKSクラスターVPCの作成 • クラスター作成前にクラスターで利⽤するVPCを作 成する必要有り • EKS CreateCluster APIの必須パラメータ • name︓クラスターの名前 • role-arn︓サービスロールのARN • resources-vpc-config︓クラスターが利⽤するVPCの 情報 EKSクラスター⽤のVPCを 作らなくては︕

Slide 27

Slide 27 text

27 公式ドキュメント(クラスターVPC) https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/network_reqs.html

Slide 28

Slide 28 text

28 クラスターVPCの主な要件(1) • 2つ以上のAZ • パブリックサブネット(インターネット⽤ロードバ ランサー) • プライベートサブネット(ワーカーノード⽤) • アウトバウンドインターネットアクセス→要NAT Gateway

Slide 29

Slide 29 text

29 クラスターVPCの主な要件(2) • VPC IPアドレス指定(RFC 1918)とパ ブリック(⾮RFC 1918)の両⽅を定義 可能 • VPCのタグ付け要件 • サブネットのタグ付け要件 • 内部ロードバランサー⽤のプライベート サブネットタグ付け要件 • 外部ロードバランサー⽤のパブリックサ ブネットタグ付け要件 キー 値 kubernetes.io/cluster/ shared キー 値 kubernetes.io/cluster/ shared キー 値 kubernetes.io/role/inter nal-elb 1 キー 値 kubernetes.io/role/elb 1

Slide 30

Slide 30 text

30 Amazon EKSクラスターVPCの作成 CloudFormation実⾏ で2層構造のVPCが作 成される ・PublicSubnet2個 ・PrivateSubnet2個 (NAT Gatewayへの ルーティング有り)

Slide 31

Slide 31 text

31 ③EKSクラスターの作成

Slide 32

Slide 32 text

32 Amazon EKSクラスターの作成 • 必須 • Cluster name • Kubernetes version • Role︓前で作成したEKSのサービスロール • VPC︓前で作成したクラスターVPC • Subnets︓上で指定したVPCのサブネットが全て表⽰されている ので選択 • ⾮必須 • Endpoint private access • Endpoint Public access • ログ記録

Slide 33

Slide 33 text

33 Amazon EKSクラスターの作成 クラスターの作成により、ク ラスターVPC内にコントロー ルプレーンと通信するための ENI(Elastic Network Interface)が作成され、 Kubernetesのコントロール プレーンと通信可能となる 同時にクラスター内通信⽤の 専⽤のクラスターセキュリ ティグループが作成される EKS

Slide 34

Slide 34 text

34 EKSコントロールプレーンとVPCの関係 Controle Plane VPC VPC Controle Plane A Controle Plane B Controle Plane VPC A VPC B これは無理

Slide 35

Slide 35 text

35 公式ドキュメント(セキュリティグループ) https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/sec-group-reqs.html KubernetesおよびEKSのバージョ ンにより仕様が違うので注意

Slide 36

Slide 36 text

36 ④kubeconfigの作成

Slide 37

Slide 37 text

37 kubeconfigとは kubernetesを扱うためのCLIであるkubectlコマンドの 接続先クラスターを管理する設定ファイル クラスター作成直後は、クライアントからkubectlがつ ながらない状態 kubectl kubeconfig 未設定のため つながらない

Slide 38

Slide 38 text

38 kubeconfigの作成 以下のコマンド実⾏で⾃動的にkubeconfigを設定して くれる $ aws eks update-kubeconfig –name cluster-name - context: cluster: arn:aws:eks:ap-northeast-1:629895769338:cluster/handson-eks-cluster user: arn:aws:eks:ap-northeast-1:629895769338:cluster/handson-eks-cluster name: arn:aws:eks:ap-northeast-1:629895769338:cluster/handson-eks-cluster current-context: arn:aws:eks:ap-northeast-1:629895769338:cluster/handson-eks-cluster ~/.kube/configファイルを⾃動で書き換え (カレントコンテキストも設定)

Slide 39

Slide 39 text

39 kubeconfigの作成 user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 args: - --region - ap-northeast-1 - eks - get-token - --cluster-name - handson-eks-cluster command: aws 今はaws-iam-authenticatorが不要になりaws cliで トークン取得が可能になっている $ aws eks get-token

Slide 40

Slide 40 text

40 kubeconfigの作成 $ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 443/TCP 10h $ kubectl get nodes No resources found. ようやくkubernetesの世界にたどり着いた ノードはまだない

Slide 41

Slide 41 text

41 ⑤マネージド型ノードグループの起動

Slide 42

Slide 42 text

42 マネージド型ノードグループの起動 ワーカーノード⽤IAMロールの作成 • AmazonEC2ContainerRegistryReadOnly • ECR参照⽤ • AmazonEKSWorkerNodePolicy • ワーカーノードからのEKSクラスターアクセス⽤ • AmazonEKS_CNI_Policy • VPC CNI Plugin⽤ポリシー • ワーカーノードによるネットワーク設定変更⽤ これはなにか︖

Slide 43

Slide 43 text

43 公式マニュアル(ポッドネットワーキング) CNIプラグイン は、ワーカー ノードのVPC IP アドレスをポッ ドのIPアドレス に割り当てるプ ラグイン https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/pod-networking.html

Slide 44

Slide 44 text

44 マネージド型ノードグループの起動 マネージド型ノードグループの作成 • IAMロール、サブネット、リモートアクセス可否 • コンピューティング構成設定(AMIタイプ、インス タンスタイプ、ディスクサイズ) • スケーリングポリシー コンソールのEKSクラスター画⾯からポチポチ でできるのでめっちゃ楽

Slide 45

Slide 45 text

45 ワーカーノードの起動確認 $ kubectl get node NAME STATUS ROLES AGE VERSION ip-192-168-148-252.ap-northeast-1.compute.internal Ready 6m v1.14.7-eks-1861c5 ip-192-168-213-27.ap-northeast-1.compute.internal Ready 6m v1.14.7-eks-1861c5 ノードができた︕︕ EC2にはいろんなタグ が満載

Slide 46

Slide 46 text

46 ここまでやってみて はじめてこれが⾔えます

Slide 47

Slide 47 text

47 今⽇のゴール EKS完全に理解した Amazon EC2 Elastic Load Balancing (ELB) EKS

Slide 48

Slide 48 text

48 ハマコーオススメの EKS学習マテリアル

Slide 49

Slide 49 text

49 2019年最終⽉の奇跡 https://qiita.com/advent-calendar/2019/amazon-eks

Slide 50

Slide 50 text

50 まとめ • EKSを⻑きに渡って運⽤するには、kubernetesの知 識以前に、各AWSリソースがどのように連携して動 作しているのか知ることが不可⽋ • 公式マニュアルの「コンソールでの開始」を元に じっくりポチポチ始めてみよう • Amazon EKS Advent Calendar 2019は宝の⼭

Slide 51

Slide 51 text

51 皆さんのこれからの⻑い EKS⼈⽣に幸多きことを 願っております