はじめに
最近コンテナ技術に興味があっていろいろ調べてみたので、
自分なりに理解したコンテナ、Kubernetes、EKSの概要を紹介してみます。
自分の理解が違うようであればご指摘いただけると嬉しいです。
コンテナ技術とは
-
OS上に他のプロセスからは隔離されたアプリケーション実行環境を構築する技術のこと
-
仮想的な動作環境をより少ないコンピュータリソースで実現する
-
コンテナのデファクトスタンダードはDocker

コンテナ技術のメリット
- コンテナイメージを作成することで環境のパッケージ化ができる
- どんな場所でも同じように動かせる
- 起動が高速である
- ゲストOSの起動が必要ないため
- アプリケーションのデリバリ方法が簡単かつ統一されている
- docker push/pull/run等のコマンド
- メモリ消費が抑えられる
⇨ 同一の環境を高速にたくさん起動できるので、スケールがしやすい
Kubernetesとは
- コンテナはスケールがしやすい≒コンテナの管理が難しい…
⇨コンテナの管理を便利にしてくれるのがKubernetes - コンテナを動かすマシンにあるエージェント(kubelet)とAPIサーバ(マスターコンポーネント)が通信をすることで、コンテナに対して様々な操作をすることができる
- いろんなことができるよ
- ホストの管理
- コンテナの起動/停止のスケジューリング
- コンテナの死活監視
- 自動修復
- 負荷分散
- アプリケーション設定の管理
などなど

EKSとは
- Kubernetes環境で実行されているアプリケーションをAWS上で動かすためのマネージドサービス
- KubernetesをAWSで使いたいときのためのサービス
- コンテナが稼働するためのマシン(データプレーン)はEC2を使用する

EKSとEC2の関係性
ECR
参考資料
より詳しく知るには
AWSオンラインカンファレンスの「はじめてのコンテナワークロード」というセッションがおすすめです!
コンテナオーケストレーションの仕組みについてわかりやすく解説されています。