ユーザ用ツール

サイト用ツール


aws:note:container

AWSで使えるコンテナサービスの比較(ECS, EKS, Fargate)

AWSで使えるコンテナサービスの一覧

AWSで使えるコンテナサービスの一覧をまずは簡単な説明で一覧にしたいと思います。

Amazon ECR Amazon Elastic Container Registry
コンテナイメージの圧縮保存・管理・デプロイする
Amazon ECS Amazon Elastic Container Service
完全マネージド型のコンテナオーケストレーションサービス
Amazon EKS Amazon Elastic Kubernetes Service
完全マネージド型のKubernetesサービス
AWS Fargate Amazon ECSとAmazon EKSで動作する、コンテナ向けサーバーレスコンピューティング


AWSのコンテナサービスの役割

レジストリ(ECR)

各サーバーで実行するコンテナイメージを蓄積し、管理します。

  • Amazon ECR (Elastic Container Registry)
  • ECSでも、EKSでも、AWSで使うなら、Docker Hubではなく、ECRを使いましょう。


コントロールプレーン(ECSかEKS)

コントロールプレーンは、デプロイ・スケジューリング・スケーリングのオーケストレーション・アプリケーション管理を行います。
AWSでは、以下を選べます。

  • Amazon ECS (Elastic Container Service)
    • ECS on Fargate
    • ECS on EC2
  • Amazon EKS (Elastic Kubernetes Service)
    • EKS on Fargate
    • EKS on EC2
コントロールプレーン ECS EKS
コスト 無料 必要
0.20USD/時間。1ヶ月で144USD。
更新 無し k8sバージョンアップへの追従が必要
3カ月に1度
サポートされるのは1年間のみ
コンテナ環境の定義 ECS独自仕様
Webコンソール
k8sのマニフェスト
セキュリティグループ サービスに付与 EC2に付与
CI ビルドは、CodeBuildか、GitHub Actionsか、CircleCI
レジストリは、ECR
CD CodePipeline
CodeDeployを使ったB/Gデプロイ
kubectl applyの手動実行
SpinnakerやArgoCD、flux
監視 CloudWatch Container Insights

ECS

  • タスク定義(kubernetesのPod)とサービス定義で構築します。(AWS独自仕様)

EKS

Kubernetesクラスターのバージョンアップを行う際には同等の別環境を構築してバージョンアップの検証を行い、実際に本番環境のバージョンアップを行う際にはアップデートの失敗を考慮してブルーグリーンデプロイメントと呼ばれるような、「現在の本番環境を維持したまま新しい本番環境を構築して、DNSの切り替えによって環境移行を行う」ようなオペレーションが必要になります。

AWSでコンテナを支えるサービスについて ECS、EKS、Fargateの違いは? 第2回(最終回) | SunnyCloud



Docker向けのAmazon ECSとKubernetes向けAmazon EKSがあります。
小規模なコンテナではAmazon ECSを利用するのがいいです。
大規模システムでは、Amazon EKSも考えられます。


データプレーン(FargateかEC2)

データプレーンは、コンテナの実行環境、実行サーバーを指します。

AWSでは、以下が選べます。

  • AWS Fargate
  • Amazon EC2(コンテナ用のEC2)
データプレーン Fargate EC2
コスト EC2の1.2~1.3倍 EC2と同じ
コンテナホスト管理 不要 必要
コンテナのデバッグ 困難
・ホストにsshできない。
・docer ps, docker execできない
容易
スケジューリング
(バッチ処理)
用意 別途必要
その他 立ち上がりに時間がかかる

小規模ならサーバを意識しないサーバーレスであるAWS Fargateが楽ですが、
コンテナを長く動かす場合、Amazon EC2も候補になります。


コンテナの監視(CloudWatch Container Insights)

ECSでもEKSでも、CloudWatch Container Insightsで行えます。

  • Container Insightsは2019年9月にGAとなった機能
  • ECSの場合クラスターでこれを有効化しておくだけ
  • EKS on EC2ではWorkerノードにエージェントコンテナをDaemonSetとして展開する
  • EKS on Fargateでは、CloudWatch Container Insights未対応です。DaemonSetも使えないです。


コンテナのログ運用の方法

EKS では CloudWatch Container Insights を入れると、CloudWatch Logs に各コンテナの標準出力と標準エラー出力が転送されるようになります。

ログコレクター

awslogsログドライバ

AWS CloudWatch Logsへ転送


Splunkログドライバ

Splunk RUL, Splank トークンパラメータを指定してログ情報を送信


FireLens機能

従来に比べて非常に簡単にログを取り扱うことを可能にした
Fluentdに送る


Fluentd

  • ログのバッファー溢れなどによる欠損対策が必要

Logstash

  • Elastic社が開発

Beats

  • データの収集に特化 (機能がシンプル)
  • Golangで書かれており高速に動作する


ログの保存場所

Amazon S3

  • データ分析にはAmazon Athenaを利用することで、SQLライクな検索が可能

Amazon CloudWatch Logs

Amazon Elasticsearch Service

  • 可用性を高めるにはマスターノードとデータノードを分ける必要があり、運用コストが上がる


コンテナ利用の静的コンテンツ配置場所

S3に保存しCloudFrontを利用

元々EC2でローカルにおいていた場合、S3にデータを置き、CloudFront経由にするのがよくあるやり方です。


参考

aws/note/container.txt · 最終更新: 2021/07/20 00:14 by kurihara

ページ用ツール