概要
仕事でKubernetes(AWSのEKS)を利用する機会が出てきたため学習します。
学習ステップとしては以下のようにしてみようと思っています。
- Kubernetesの基本用語の理解
- Kubernetes公式チュートリアルやってみる
- EKSの基本用語理解
- EKSでサービスを作ってみる
今回はステップ3 「EKSの基本用語理解」
この記事はそのメモやまとめです。
すでに設定済みの項目がいくつかある。
試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。
ECSについて理解する。
AWSでContainerを使おうとするとECS or EKSになると思うので、まずはECSについて用語を含めて理解していく。
ECS
Amazon Elastic Container Service (ECS) はフルマネージドのコンテナオーケストレーションサービスであり、コンテナ化されたアプリケーションをより効率的にデプロイ、管理、スケールするのに役立ちます。AWS 環境と深く統合され、Amazon ECS Anywhere を使用した高度なセキュリティ機能を備えた、クラウドとオンプレミスでコンテナワークロードを実行するための使いやすいソリューションを提供します。
つまり前々回の用語で話したデータプレーンの部分をAWS側で用意したESCというフルマネージドなコンテナオーケストレーションが行ってくれるという感じですかね。(Kubernetesじゃないから厳密には違うかもだけど……)
Nodeで起動できるサーバー、Eコンテナを動かすための実行環境(データプレーン)をEC2、コンテナに特化したAWS Fargate、自分の所有するマシンとするAmazon ECS on AWS Outpostsの3つから選べる。
ECR
Containerのイメージを格納する場所
タスク定義などはEKCのみなのでスキップします。
こちらも参考にしました。
ESCとEKSって何が違うの?
こちらのページが非常にわかりやすかったです。
コントロールプレーンをAWSが独自に開発したECSが担当するか、AWSにマネージドされたKubernetesが担当するか、の違いだと思っています。
また、この2つのどちらを利用してサービスを作成する場合運用面で違いはどうなるか?なども理解できました。
ECSは学習コストが低く、小さなシステムに向いているが、大きくなるに連れてそれに付随するサービスを自分で作成する必要があるのでどんどん管理が大変になっていく。
EKSはEKSだけではなくKubernetesの学習も必要なので学習コストが高い、コントロールプレーンに料金がかかる、定期的なKubernetes自体のアップデートが必要、といったところでしょうか。
EKSはコスト面や運用面など事前にいろいろ考える必要がありそうですね。
またEKSはクラスターを作成するとクラスターには 0.1USD/hour の料金が発生します。
EKSの用語を理解する
いくつかEKS特有の用語があったので調べてします。
- ノードグループ
データプレーン、つまりNode部分について、以下の選択肢があるようで、それぞれ特徴があることがありました。
・ES2(セフル)
・EC2(マネージド)
・Fargate
EC2のマネージドの場合にノードグループという単語が登場します。
EC2(マネージド)は正式には「マネージド型ノードグループ」と呼びEKSによって管理されるEC2のASGを作成するといったものです。
- eksctl
EKSを構築/管理するためのコマンドラインツールのことです。
なんとeksctlを使うと
eksctl create cluster
だけでEKSの環境に必要なものすべてが一括で作成してくれるみたいです。す、すごすぎる……。
- Fargate プロファイル
EKSでFargateを利用するための設定情報のようです。
これをEKSに設定した後にKubectlでPodを起動させると、Fargateが起動してFargate上でPodが実行される、といったようにしてFargateが起動するようです。
EKS on Fargate
EKSでFargateを使って構築することを「EKS on Fargate」と呼ぶようです。
こちらについても概要などを学習します。
便利な反面、できないことやりにくいことも結構あるようですね。
EKSを学習する
まずはblackbeltを見る。
次はクラスメソッドさんの入門編を見る。
ログはどうするの?
特にFargateを利用する際はログの管理がかなり厄介なようです。
今回は深掘りしませんが、複雑だということだけ覚えておきます。