Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今こそ振り返るEKSの基礎

 今こそ振り返るEKSの基礎

皆さん、EKS始めるときeksctl使ってますか?コマンド一発でAWS関連リソースやインフラ一式できあがる超便利ツールですが、逆に個別のAWSリソースがどのように作成されているか、クラスターに紐づくVPCやNodeにはどのような制約があるのか、IAM周辺がどのように処理されているのか、そのあたり隠蔽されて分かりづらい部分あるんじゃないでしょうか。

このセッションでは、改めてEKS周辺のAWSリソースがどのように関連して動作しているのかを振り返りつつ、今日のEKS祭りのためのベース知識を皆さんと共有できればと思います。

濱田孝治

January 23, 2020
Tweet

More Decks by 濱田孝治

Other Decks in Technology

Transcript

  1. 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本
  2. 8 ⾃分のEKSの始め⽅ 1. kubernetes触りたい 2. どこでやろ。やっぱり慣れてるからAWSつかうか 3. eksctl、マジ神︕ 4. [kubectl

    apply]で、コンテナできた︕環境できたの で、kubernetes本の内容試してみるで︕ 5. kubernetesおもろいやん︕ワッショイワッショイ!!
  3. 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 これだけのリソースが、たったあ れだけのコマンドで出来上がる 驚き
  4. 14 EKS運⽤するにあたり出てきそうなあるあるネタ あなたはこれらの運⽤に即座に対応できるでしょうか︖ • クラスターのアップデート、実際どないしよ • クラスター触れる⼈を増やしたい • 既存のクラスターVPCに別のクラスターを接続させたい •

    ノードグループを複数VPCに展開したい • NAT Gateway⾼いからInternetGatewayだけにしたい • コントロールプレーンとワーカーノードを別AWSアカウントで管理 したい • 2AZのVPCを3AZに拡張したい。もちろんノードも使いたい
  5. 19 Agenda • コンソールによるEKSの開始⽅法の解説 ① Amazon EKSサービスロール作成 ② EKSクラスターVPCの作成 ③

    EKSクラスターの作成 ④ kubeconfigの設定 ⑤ マネージド型ノードグループの起動 • オススメのEKS学習マテリアル
  6. 21 EKSクラスターが利⽤するサービスロールを作成 • EKSクラスターが他のAWSリソースに対してアクセスするた めのロールを作成。必須のAWSマネージドポリシーは2つ • AmazonEKSServicePolicy • EKSがKubernetesクラスタを作成〜運⽤するためのポリシー •

    例)クラスターログの転送(logs:PutLogEvents) • 例)VPCに作成するENI(ec2:CreateNetworkInterface) • AmazonEKSClusterPolicy • KubernetesクラスタのコントロールプレーンがAWSリソースを 操作するためのポリシー • 例)autoscaling,ec2,elasticloadbalancing
  7. 26 Amazon EKSクラスターVPCの作成 • クラスター作成前にクラスターで利⽤するVPCを作 成する必要有り • EKS CreateCluster APIの必須パラメータ

    • name︓クラスターの名前 • role-arn︓サービスロールのARN • resources-vpc-config︓クラスターが利⽤するVPCの 情報 EKSクラスター⽤のVPCを 作らなくては︕
  8. 29 クラスターVPCの主な要件(2) • VPC IPアドレス指定(RFC 1918)とパ ブリック(⾮RFC 1918)の両⽅を定義 可能 •

    VPCのタグ付け要件 • サブネットのタグ付け要件 • 内部ロードバランサー⽤のプライベート サブネットタグ付け要件 • 外部ロードバランサー⽤のパブリックサ ブネットタグ付け要件 キー 値 kubernetes.io/cluster/<c luster-name> shared キー 値 kubernetes.io/cluster/<c luster-name> shared キー 値 kubernetes.io/role/inter nal-elb 1 キー 値 kubernetes.io/role/elb 1
  9. 32 Amazon EKSクラスターの作成 • 必須 • Cluster name • Kubernetes

    version • Role︓前で作成したEKSのサービスロール • VPC︓前で作成したクラスターVPC • Subnets︓上で指定したVPCのサブネットが全て表⽰されている ので選択 • ⾮必須 • Endpoint private access • Endpoint Public access • ログ記録
  10. 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ファイルを⾃動で書き換え (カレントコンテキストも設定)
  11. 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
  12. 40 kubeconfigの作成 $ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP

    PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 10h $ kubectl get nodes No resources found. ようやくkubernetesの世界にたどり着いた ノードはまだない
  13. 42 マネージド型ノードグループの起動 ワーカーノード⽤IAMロールの作成 • AmazonEC2ContainerRegistryReadOnly • ECR参照⽤ • AmazonEKSWorkerNodePolicy •

    ワーカーノードからのEKSクラスターアクセス⽤ • AmazonEKS_CNI_Policy • VPC CNI Plugin⽤ポリシー • ワーカーノードによるネットワーク設定変更⽤ これはなにか︖
  14. 45 ワーカーノードの起動確認 $ kubectl get node NAME STATUS ROLES AGE

    VERSION ip-192-168-148-252.ap-northeast-1.compute.internal Ready <none> 6m v1.14.7-eks-1861c5 ip-192-168-213-27.ap-northeast-1.compute.internal Ready <none> 6m v1.14.7-eks-1861c5 ノードができた︕︕ EC2にはいろんなタグ が満載