Slide 1

Slide 1 text

© 2020, Amazon Web Services, Inc. or its Affiliates. AWS Container Orchestration 101 Shinichi Hama Solutions Architect Amazon Web Services Japan Jun 18, 2020

Slide 2

Slide 2 text

© 2020, Amazon Web Services, Inc. or its Affiliates. 自己紹介 Shinichi Hama Twitter/@track3jyo Solutions Architect Amazon Web Service Japan 西日本のお客様の支援 & Container のあれこれ <好きなAWSサービス> Amazon ECS Amazon EKS AWS Fargate Amazon DynamoDB

Slide 3

Slide 3 text

© 2020, Amazon Web Services, Inc. or its Affiliates. アジェンダ • Why Container? • Container Orchestration • Amazon ECS & Amazon EKS(Kubernetes)

Slide 4

Slide 4 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Why Container?

Slide 5

Slide 5 text

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Why containers? • Run Anywhere • Portability • Isolated processes

Slide 6

Slide 6 text

© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Why containers? • Run Anywhere • Portability • Isolated processes → CI/CD による⾃動化、デリバリ速度の向上 → リソース集積率を⾼めることによる仮想マシ ンコストの削減 といったメリットが⾒込める

Slide 7

Slide 7 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Docker Docker 社が開発 Apache 2.0 ライセンス 2013年3⽉ OSS リリース 常駐型コンテナ実⾏エンジン コンテナのライフサイクル管理・デプロイツール

Slide 8

Slide 8 text

© 2020, Amazon Web Services, Inc. or its Affiliates. 仮想マシンとコンテナ

Slide 9

Slide 9 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Docker を利⽤した基本的ワークフロー - コンテナイメージ作成 -

Slide 10

Slide 10 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Docker を利⽤した基本的ワークフロー - コンテナ実⾏ -

Slide 11

Slide 11 text

© 2020, Amazon Web Services, Inc. or its Affiliates. 思っていたよりも⼿作業︖ • Docker の責務は同⼀サーバ上のコンテナライフサイクル管理 • 複数サーバやコンテナを束ねた概念に対するオペレーションはスコー プ外

Slide 12

Slide 12 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Container Orchestration

Slide 13

Slide 13 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションがない世界 $ ssh … イメージレジストリ Docker Engine EC2 インスタンス # docker run ... コンテナ イメージのダウンロード コンテナ イメージ

Slide 14

Slide 14 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションがある世界 API イメージレジストリ Docker Engine EC2 インスタンス コンテナ イメージのダウンロード コンテナ イメージ Orchestrator Agent API (docker run …)

Slide 15

Slide 15 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの世界 API Docker Engine Orchestrator Agent Docker Engine Agent Docker Engine Agent Docker Engine Agent クラスタ

Slide 16

Slide 16 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ エージェントは⾃⾝が所属する 仮想マシン内の情報を継続的に オーケストレータへ報告 - 同仮想マシン内で実⾏中の コンテナ - 同仮想マシン内の空きリ ソース(e.g. CPU, メモリ) - etc.

Slide 17

Slide 17 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ オーケストレータはクラスタ内 のエージェント群から受け取っ た情報を元にクラスタ全体の状 態を把握

Slide 18

Slide 18 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ ユーザーはオーケストレータの API を呼ぶ際に以下のような情 報を合わせて指定する - 実⾏するコンテナイメージ - そのコンテナが必要とする CPU/メモリリソース量 - etc.

Slide 19

Slide 19 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ オーケストレータはユーザーか らの API 呼び出しを受けるとク ラスタ内の空きがある仮想マシ ンを⾒つけ、同マシン上でのコ ンテナ実⾏を予約する = スケジューリング

Slide 20

Slide 20 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ エージェントは⾃⾝の所属する 仮想マシンでの実⾏が予約され たコンテナ情報を受け取ると、 Docker Engine に対して docker run コマンドを発⾏し、コンテ ナを実⾏する

Slide 21

Slide 21 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ エージェントは⾃⾝の所属する 仮想マシンでの実⾏が予約され たコンテナ情報を受け取ると、 Docker Engine に対して docker run コマンドを発⾏し、コンテ ナを実⾏する この一連の流れが 「宣言的デプロイメント」

Slide 22

Slide 22 text

© 2020, Amazon Web Services, Inc. or its Affiliates. 宣言的デプロイメントのワークフロー 1. ユーザーはオーケストレータに対して「望ましい状態」を宣言 § 望ましい状態 = 指定コンテナが指定リソースの割り当てを受けて実行 されている状態 2. オーケストレータはクラスタ内のコンテナ実行状況を常にユーザーが宣 言した状態に収束させようとする 3. ユーザーの宣言内容が変更されると、オーケストレータはクラスタ内の コンテナ実行状況がその宣言状態に収束するようにクラスタ内のコンテ ナの停止や起動をスケジュール (= 新バージョンのデプロイ) 4. スケジュールを検知したエージェントがコンテナの停止や起動を実施

Slide 23

Slide 23 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションのControl Loop Observe Check Defferences Take Action API Server(Control Planeのインターフェー ス)に問い合わせ あるべき姿と突き合わせ 差分があれば埋める

Slide 24

Slide 24 text

© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションツールの紹介 Amazon Elastic Container Service Docker Swarm

Slide 25

Slide 25 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Amazon ECS & Amazon EKS(Kubernetes)

Slide 26

Slide 26 text

© 2020, Amazon Web Services, Inc. or its Affiliates.

Slide 27

Slide 27 text

© 2020, Amazon Web Services, Inc. or its Affiliates. AWSのコンテナ関連サービス Amazon Elastic Container Service Amazon Elastic Kubernetes Service Amazon EC2 AWS Fargate Amazon Elastic Container Registry オーケストレーション デプロイ、スケジューリング、 スケーリング、クラスタ管理 実行環境 コンテナが実行される場所 イメージレジストリ コンテナイメージのレポジトリ

Slide 28

Slide 28 text

© 2020, Amazon Web Services, Inc. or its Affiliates. We Give You The Power To Choose: ECS EKS EC2 Fargate EC2 Fargate 1. Choose your orchestration tool 2. Choose your launch type

Slide 29

Slide 29 text

© 2020, Amazon Web Services, Inc. or its Affiliates. AWSコンテナサービスを数字で見る https://aws.amazon.com/jp/containers/ 80% クラウドのすべてのコンテナ化され た実⾏中のアプリケーションのうち AWS で実⾏されている割合 150% AWS コンテナサービスの 前年比の成長 10倍 1 年間の EKS 使⽤量の増加 3倍 1 年間の Fargate 使⽤量の増加 毎週 1 億タスクを実⾏ 20億回以上 ECR を使⽤した毎週の Image Pull

Slide 30

Slide 30 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Amazon Elastic Container Service

Slide 31

Slide 31 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Elastic Container Service (ECS) • クラウドでコンテナを本番環境利⽤す るためのオーケストレーター • 各種 AWS サービスとの⾼度な連携 • 多様なワークロードをサポートする 「タスク」「サービス」というシンプ ルなリソース表現 • Linux/Windows サポート https://aws.amazon.com/jp/ecs/ サービス紹介ページ Amazon ECS

Slide 32

Slide 32 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon ECSの主要要素 コンテナ イメージ コンテナ イメージ 参照 タスクを構成するコンテナ群定義︓ • コンテナ定義(イメージ場所等) • 要求CPU & メモリ • タスクに割当てるIAMロール • ネットワークモード • etc... タスク定義 クラスター • 実⾏環境の境界 • IAM権限の境界(クラスタに対する操作) • スケジュールされたタスクの実⾏を設定可能 サービス • タスク実⾏コピー数(n個)を定義 • 起動後、タスク実⾏コピー数を維持 • ELBと連携 • 起動タイプ(EC2, Fargate)を設定 参照 タスク • タスク定義に基づき起動され るコンテナ群 • Task内コンテナは 同⼀ホスト上で実⾏される

Slide 33

Slide 33 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon ECS の各種AWSサービスのIntegration • ロードバランシング︓Elastic Load Balancing • 設定情報管理︓AWS SSM Parameter Store 、 Amazon S3 • 秘密情報管理︓AWS Secrets Manager • サービスディスカバリ︓AWS Cloud Map • バッチジョブ︓EventBridge 、Step Functions • 認証認可︓IAM • モニタリング、ロギング︓CloudWatch 、X-Ray • NFS︓EFS • CI/CD︓Code シリーズ

Slide 34

Slide 34 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • たくさんのお客様がEC2上にセルフマネージドなKubernetesを動かしていた • Kubernetesの周りにあるOSSのエコシステムやその拡張性の⾼さを望まれていた

Slide 35

Slide 35 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Elastic Kubernetes Service

Slide 36

Slide 36 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon EKS, Kubernetes • 運⽤難易度の⾼い Kubernetes マスターをマネージドで提供 • エコシステムの OSS やツールを利⽤で きる, CNCF certified • EKS サービスチーム、OSS チームによ る Kubernetes コミュニティへの貢献 • オープンソース • “Pod”, ”Deployment”, “Service”, “Job” などのリソースに代表される⾼い表現⼒

Slide 37

Slide 37 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Kubernetes control plane をマネージドサービスとして提供 kubectl コマンド Client コントロールプレーン データプレーン Worker Node Worker Node Worker Node Amazon EKS Kubernetes API Server

Slide 38

Slide 38 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 多種多様な OSS との連携 各種コミュニティにより開発された多種多様なエコシステムとの連携 • Kubernetes のパッケージマネージャ • 各 OSS のインストールやパッケージの展開が可能 Prometheus モニタリング CI/CD サービスメッシュ ネットワーキング CNI CoreDNS

Slide 39

Slide 39 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Kubernetes のバージョンポリシーについて コントロールプレーン • 約3ヶ⽉に⼀度 コントロールプレーンのマイナーバージョンがリリース • それぞれのバージョンは約9ヶ⽉間メンテナンスされる Ø Kubernetes ポリシーでは最新 3 マイナーバージョン以内に保つ必要がある データプレーン • ワーカーノード (kubelet) のバージョンは、コントロールプレーンのバージョン を超えず、かつ2つ古いマイナーバージョンまでである必要がある 定期的なバージョンアップ対応、CHANGELOG からバージョンアップの影響を 調査、検証できる専⾨のメンバーが複数名いることが望ましい https://kubernetes.io/ja/docs/setup/release/version-skew-policy/ ◼Kubernetesバージョンとバージョンスキューサポートポリシー

Slide 40

Slide 40 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. EKSのバージョンの考え⽅ • Kubernetes プロジェクト同様、⼀時点で3つのバージョンをサポート • EKS チームによるテスト通過後に最新のコントロールプレーンのバージョンが⼀般利⽤ 可能になるため、EKS のバージョンは Kubernetes の latest から behind する • 対象のバージョンが使⽤できなくなる場合は最低 2ヶ⽉前までに AWS よりアナウンス • サポート終了⽇を迎えると⼀定期間の間に⾃動的にアップデートされる(※ ワーカーノー ドは⼿動でアップデートする必要あり) • 1.13 • 1.14 • 1.15 • 1.16 • 1.17 • 1.18 <-- Kubernetes の latest version EKS がサポートしている version(1.13は2020/06にDeprecated) ※ 2020/5/01 現在 Kubernetes と EKS の最新バージョン差異の例

Slide 41

Slide 41 text

© 2020, Amazon Web Services, Inc. or its Affiliates. 周辺を支えるサービス群 Amazon EC2 Source Build/Test Deploy AWS CodeCommit AWS CodeBuild Amazon Aurora Amazon S3 Developer Control plane Data plane Backing service Registry CI/CD pipeline AWS CodePipeline AWS CodeDeploy AWS Secrets Manager Parameter Store Secrets/Configs

Slide 42

Slide 42 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. コンテナ関連サービスの公開ロードマップ https://github.com/aws/containers-roadmap

Slide 43

Slide 43 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Thank you !! Shinichi Hama track3jyo