Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS Container Orchestration 101
Search
はまーん
PRO
June 18, 2020
0
600
AWS Container Orchestration 101
はまーん
PRO
June 18, 2020
Tweet
Share
More Decks by はまーん
See All by はまーん
アジリティと両立する AWS のガバナンスコントロール
track3jyo
PRO
4
260
もうすぐローンチ 3 周年! AWS App Runner の魅力と進化の歴史
track3jyo
PRO
9
4.6k
スタートアップと re:invent 2023 と THE FRUGAL ARCHITECT
track3jyo
PRO
1
330
AWS App Runner を使う時に押さえておきたい勘所 〜 Web アプリをコンテナに最適化する 〜
track3jyo
PRO
6
6.5k
Hugo で作ったブログに閲覧数ランキングが欲しい!
track3jyo
PRO
2
1k
必要十分な設計をデザインし続けるコト ~ ECS の Blue/Green デプロイを添えて ~
track3jyo
PRO
4
530
\ 祝!/AWS 大阪リージョン 2 周年の歩み
track3jyo
PRO
0
580
AWS re:Invent recap: SA が選ぶ 『スタートアップに嬉しい新サービス・新機能』 #AWSStartupfm
track3jyo
PRO
3
460
あなたと 「|」 したい・・・
track3jyo
PRO
2
2.4k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
How to Ace a Technical Interview
jacobian
276
23k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Designing for humans not robots
tammielis
250
25k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Transcript
© 2020, Amazon Web Services, Inc. or its Affiliates. AWS
Container Orchestration 101 Shinichi Hama Solutions Architect Amazon Web Services Japan Jun 18, 2020
© 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
© 2020, Amazon Web Services, Inc. or its Affiliates. アジェンダ
• Why Container? • Container Orchestration • Amazon ECS & Amazon EKS(Kubernetes)
© 2020, Amazon Web Services, Inc. or its Affiliates. Why
Container?
© 2019, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. Why containers? • Run Anywhere • Portability • Isolated processes
© 2019, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. Why containers? • Run Anywhere • Portability • Isolated processes → CI/CD による⾃動化、デリバリ速度の向上 → リソース集積率を⾼めることによる仮想マシ ンコストの削減 といったメリットが⾒込める
© 2020, Amazon Web Services, Inc. or its Affiliates. Docker
Docker 社が開発 Apache 2.0 ライセンス 2013年3⽉ OSS リリース 常駐型コンテナ実⾏エンジン コンテナのライフサイクル管理・デプロイツール
© 2020, Amazon Web Services, Inc. or its Affiliates. 仮想マシンとコンテナ
© 2020, Amazon Web Services, Inc. or its Affiliates. Docker
を利⽤した基本的ワークフロー - コンテナイメージ作成 -
© 2020, Amazon Web Services, Inc. or its Affiliates. Docker
を利⽤した基本的ワークフロー - コンテナ実⾏ -
© 2020, Amazon Web Services, Inc. or its Affiliates. 思っていたよりも⼿作業︖
• Docker の責務は同⼀サーバ上のコンテナライフサイクル管理 • 複数サーバやコンテナを束ねた概念に対するオペレーションはスコー プ外
© 2020, Amazon Web Services, Inc. or its Affiliates. Container
Orchestration
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションがない世界
$ ssh … イメージレジストリ Docker Engine EC2 インスタンス # docker run ... コンテナ イメージのダウンロード コンテナ イメージ
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションがある世界
API イメージレジストリ Docker Engine EC2 インスタンス コンテナ イメージのダウンロード コンテナ イメージ Orchestrator Agent API (docker run …)
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの世界
API Docker Engine Orchestrator Agent Docker Engine Agent Docker Engine Agent Docker Engine Agent クラスタ
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み
API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ エージェントは⾃⾝が所属する 仮想マシン内の情報を継続的に オーケストレータへ報告 - 同仮想マシン内で実⾏中の コンテナ - 同仮想マシン内の空きリ ソース(e.g. CPU, メモリ) - etc.
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み
API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ オーケストレータはクラスタ内 のエージェント群から受け取っ た情報を元にクラスタ全体の状 態を把握
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み
API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ ユーザーはオーケストレータの API を呼ぶ際に以下のような情 報を合わせて指定する - 実⾏するコンテナイメージ - そのコンテナが必要とする CPU/メモリリソース量 - etc.
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み
API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ オーケストレータはユーザーか らの API 呼び出しを受けるとク ラスタ内の空きがある仮想マシ ンを⾒つけ、同マシン上でのコ ンテナ実⾏を予約する = スケジューリング
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み
API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ エージェントは⾃⾝の所属する 仮想マシンでの実⾏が予約され たコンテナ情報を受け取ると、 Docker Engine に対して docker run コマンドを発⾏し、コンテ ナを実⾏する
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションの仕組み
API Docker Engine Orchestrator Agent Docker Engine Agent ・・・ エージェントは⾃⾝の所属する 仮想マシンでの実⾏が予約され たコンテナ情報を受け取ると、 Docker Engine に対して docker run コマンドを発⾏し、コンテ ナを実⾏する この一連の流れが 「宣言的デプロイメント」
© 2020, Amazon Web Services, Inc. or its Affiliates. 宣言的デプロイメントのワークフロー
1. ユーザーはオーケストレータに対して「望ましい状態」を宣言 § 望ましい状態 = 指定コンテナが指定リソースの割り当てを受けて実行 されている状態 2. オーケストレータはクラスタ内のコンテナ実行状況を常にユーザーが宣 言した状態に収束させようとする 3. ユーザーの宣言内容が変更されると、オーケストレータはクラスタ内の コンテナ実行状況がその宣言状態に収束するようにクラスタ内のコンテ ナの停止や起動をスケジュール (= 新バージョンのデプロイ) 4. スケジュールを検知したエージェントがコンテナの停止や起動を実施
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションのControl
Loop Observe Check Defferences Take Action API Server(Control Planeのインターフェー ス)に問い合わせ あるべき姿と突き合わせ 差分があれば埋める
© 2020, Amazon Web Services, Inc. or its Affiliates. コンテナオーケストレーションツールの紹介
Amazon Elastic Container Service Docker Swarm
© 2020, Amazon Web Services, Inc. or its Affiliates. Amazon
ECS & Amazon EKS(Kubernetes)
© 2020, Amazon Web Services, Inc. or its Affiliates.
© 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 オーケストレーション デプロイ、スケジューリング、 スケーリング、クラスタ管理 実行環境 コンテナが実行される場所 イメージレジストリ コンテナイメージのレポジトリ
© 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
© 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
© 2020, Amazon Web Services, Inc. or its Affiliates. Amazon
Elastic Container Service
© 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
© 2020, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. Amazon ECSの主要要素 コンテナ イメージ コンテナ イメージ 参照 タスクを構成するコンテナ群定義︓ • コンテナ定義(イメージ場所等) • 要求CPU & メモリ • タスクに割当てるIAMロール • ネットワークモード • etc... タスク定義 クラスター • 実⾏環境の境界 • IAM権限の境界(クラスタに対する操作) • スケジュールされたタスクの実⾏を設定可能 サービス • タスク実⾏コピー数(n個)を定義 • 起動後、タスク実⾏コピー数を維持 • ELBと連携 • 起動タイプ(EC2, Fargate)を設定 参照 タスク • タスク定義に基づき起動され るコンテナ群 • Task内コンテナは 同⼀ホスト上で実⾏される
© 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 シリーズ
© 2020, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. • たくさんのお客様がEC2上にセルフマネージドなKubernetesを動かしていた • Kubernetesの周りにあるOSSのエコシステムやその拡張性の⾼さを望まれていた
© 2020, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. Amazon Elastic Kubernetes Service
© 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” などのリソースに代表される⾼い表現⼒
© 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
© 2020, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. 多種多様な OSS との連携 各種コミュニティにより開発された多種多様なエコシステムとの連携 • Kubernetes のパッケージマネージャ • 各 OSS のインストールやパッケージの展開が可能 Prometheus モニタリング CI/CD サービスメッシュ ネットワーキング CNI CoreDNS
© 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バージョンとバージョンスキューサポートポリシー
© 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 の最新バージョン差異の例
© 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
© 2020, Amazon Web Services, Inc. or its Affiliates. All
rights reserved. コンテナ関連サービスの公開ロードマップ https://github.com/aws/containers-roadmap
© 2020, Amazon Web Services, Inc. or its Affiliates. Thank
you !! Shinichi Hama track3jyo