☸️

【コンテナ】コンテナオーケストレーションサービスについてざっくりまとめる

に公開

はじめに

コンテナの管理に使用されるコンテナオーケストレーションについてざっくりまとめます。
クラウドサービスはAWSを中心に記します。

※本当にざっくりまとめています。間違いなどがあればご指摘ください。

コンテナオーケストレーションサービスとは

  • コンテナのアプリの操作を行えるサービス
    • コンテナの管理
    • コンテナアプリのデプロイ
    • スケーリング

Kubernetesとは

  • Googleが開発したコンテナオーケストレーションサービス
  • 様々なクラウドサービスとの互換性があり、汎用性が高い
  • 学習コストが結構高いっぽい

AWSのコンテナオーケストレーションサービス

  • EKS:Kubernetesベースのコンテナオーケストレーションサービス

  • ECS:AWSオリジナルのコンテナオーケストレーションサービス

  • ECSのほうが学習コスト、料金コストが低い

  • EKSはその分高度な操作できたり、他のクラウドサービスに流用できる

コントロールプレーン・データプレーン

  • コントロールプレーン:コンテナを管理するための機能
  • データプレーン:コンテナを稼働するための機能

コントロールプレーン

  • kube-apiserver:APIリクエストの窓口
  • etcd:PodやServiceの定義などを保存する
  • kube-scheduler:PodをどのNodeに配置するか決める
  • kube-controller-manager:状態の維持によって高可用性を担保する
  • cloud-controller-manager:クラウドサービスとの統合をする


  • AWSのEKSやECSは、そのサービス自体がコントロールプレーンの役割を担っている
    • EKS
    • ECS

データプレーン

  • 各クラウドサービスごとにデータプレーンは異なるっぽい
  • AWSは2種類のデータプレーンが存在する
    • EC2
    • Fargate

EC2

  • リソースやインスタンスタイプなどの細かい調整が可能

Fargate

  • サーバーレスで簡単に構築できる
  • インフラ管理も不要で、オートスケーリングを利用することで運用が楽になる

構成リソース

EKS (Kubernetes)

  • Cluster:Nodeのまとまり
  • Node:Podが動作する仮想マシン
  • Pod:コンテナの実行環境
    • PodTempateを元に生成される

※ほかに細かいリソースがありますが、今回は割愛

ECS

  • Cluster
  • Service
  • Task
    • TaskDefinitionを元に生成される

  • EKSと比べてリソースがこのくらいしかないため、学習コストが低く扱いやすい

デプロイ

ローリングアップデート

  • 一つのPodを徐々に更新していくデプロイ方法
  • 一時的にバージョンが混在することによる不具合が生じる可能性がある

Blue/Greenアップデート

  • 新旧バージョンのPodをそれぞれ用意して更新するデプロイ方法
    • 新バージョンがデプロイできたら、瞬時に切り替える感じ
    • 旧バージョンへのロールバックも容易に実現できる
  • リソース消費量が多く、コストが高くなる

さいごに

Kubernetesが難解すぎて、正直理解が追いついていないです。
本格的に使用する機会があれば再度学習しようと思います。。。

参考

https://qiita.com/tadashiro_ninomiya/items/6e6fea807b2a16732b5b

https://kubernetes.io/ja/docs/concepts/overview/components/

https://zenn.dev/issy/articles/zenn-ecs-vs-eks

https://envader.plus/article/441

Discussion