見出し画像

AWSとKubernatesの用語の整理

今回の記事では学習している中で個人的に理解に少し時間がかかってしまったものを整理したいと思います。
今から始めてAWSやKubernatesを学習するといった方にとっても役に立つ内容になれば幸いです。

用語の整理

AWS


Cluster
コンテナサービスの中でたびたび出てくる言葉「Cluster」
単語の意味通り複数のものをまとめたグループをClusterと呼びます。
ただ後述するKubernatesではこのClusterに入るものはある程度決まっている(定義されている)のに対しAWSでは単に複数のAWSサービスをグルーピングする際に使用されます。
つまりKubernatesでClusterというと中身は一意のものを示すがAWSではその時々によって中身が変わるということです。

ECS(Amazon Elastic Container Service)
コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできるフルマネージドサービス。

■ EKS (Amazon Elastic Kubernates Service)
AWSクラウドおよびオンプレミスデータセンターでKubernatesを実行するためのマネージドKubernatesサービス。


■ EC2 (Amazon Elastic Compute Cloud)
公式ドキュメントも難しい言い回しをしていますが、
私の理解では仮想サーバを作成できるサービスだと認識しています。

■ Fargate (AWS Fargate)
こちらも役割としてはEC2とほぼ同じだと認識していただければいいと思います。
※EC2, Fargateはそれぞれ機能に強み、弱みを持っているのでベストプラクティスをその都度選択することになります。
本ブログではそこには触れませんが別の記事で詳しく書こうと思います。

ここで何となく ECS、EKS と EC2、Fargate はレイヤーの違うものであると感じた方もいらっしゃると思います。
その感覚は正しいです!!
2つは明確に異なる名称で定義されており以下のようになります。
コントロールプレーン ( ECS、EKS )
データプレーン ( EC2,、Fargate )
今回は触れませんが興味があれば調べてみてください。

ここまでざっと用語を並べましたがそれぞれの関係性などイメージしずらいと思いますので、ここからはキャプチャでそれぞれ確認します。

AWS上でのサービス構成図
コントロールプレーンとデータプレーン

コンテナオーケストレーターであるECS、ECKがECRからimageをpullする役割を担っていることが分かります。
またコントロールプレーンとデータプレーンがそれぞれ2種類あることからその組み合わせは4種類あることも理解できます。

ECSでサービスを組む場合(例)
EKSでサービスを組む場合(例)
EKS構成

EKSはKubernatesを利用することもありPodという用語が登場しています。
PodについてはKubernatesのパートで説明しますので今はさらっと流しておいてもらって大丈夫です。
ECS、EKSともにALB(Application Lord Balancer)
が配置されていることが分かります。
詳細は割愛しますが、このALBではOSI参照モデルのL7(Application Layer)の負荷分散を行っています。

Kubernates


Kubernates Cluster
Kubernates Clusterはコンテナ化されたアプリケーションを実行するNodeと呼ばれるワーカーマシンの集まり。
すべてのClusterには少なくとも1つのWorker Nodeが存在する。

Master Node
Master NodeはCluster内のWorker NodeとPodを管理する。

Worker Node
Worker NodeはアプリケーションのコンポーネントであるPodをホストする。

Pod (Kubernates Pod)
Podは、1つ以上のアプリケーションコンテナ(Dockerなど)のグループとそれらのコンテナの共有リソースを表すKubernetesの抽象概念

ここまでで4つの用語を紹介しましたが、イメージするのが難しいと思いますのでAWS同様にキャプチャでそれぞれ確認してみます。

Kubernates Clusterの概要

図の中で新しく登場している用語の説明は割愛しますが、ここでNodeには
2種類あったのに上図では識別できないと感じた方もいらっしゃるかと思います。
しかしClusterの定義を思い出してみるとだんだん理解ができてきます。

Cluster = コンテナ化されたアプリケーションを実行するNodeと呼ばれるワーカーマシンの集まり。

つまり上図のNodeと書かれている部分以外もNodeだということです。
そしてNodeはMaster NodeとWorker Nodeで役割が違いましたよね?
これで察しがついた方も多いと思います。
左側のControl PlaneがMaster Node、そしてNodeと記載されているものがWorker Nodeということです。

ClusterとNodeのまとめ
Nodeの概要

上図はKubernatesの公式ドキュメントからとってきたWorker Nodeの図です。ここでKubernatesのWorker Nodeすべてに存在する2つの機能だけ紹介します。

・Kubelet:Kubernatesマスター(Master Node)とノード(Worker Node)間の通信を担当するプロセス。
マシン上で実行されているPodとコンテナを管理。

・レジストリからコンテナイメージを取得し、アプリケーションを実行する
Dockerのようなコンテナランタイム。

Podの概要

Podに含まれるものとしては以下のものがあります。

・共有ストレージ
・ネットワーキング (Kubernates Cluster固有のIPアドレス)
・コンテナのイメージバージョンや、使用するポート番号など各コンテナをどのように動かすかに関する情報

Podは1つ以上のアプリケーションコンテナを有しているためその役割としては密な関係性のアプリケーションを実行する「論理ホスト」を担っているとも言えます。

まとめ

今回はAWS、Kubernatesの基本中の基本となる部分を自分なりにまとめてみました。これを書き始めた時は全くこれらのことを理解できていませんでしたがこの記事を書いていく中で不透明だった部分がクリアになっていきこれらの技術についてもう少し学んでみたいという意欲が湧いてきました!
来年も引き続きブログとして発信していきたいなと思います。

<引用>

https://www.slideshare.net/AmazonWebServicesJapan/202108-aws-black-belt-online-seminar-amazon-ecs


この記事が気に入ったらサポートをしてみませんか?