一発でわかるKubernetes　~コンテナオーケストレーションツールをオーケストラに当てはめる~

## 前書き
先日、先輩にお誘いいただいてLT会なるものに初参加させてもらいました。
LTというのは、Lightning Talkの略称で、Lightning（稲妻、電光石火）のごとく、一瞬で終わるお手軽なスピーチを指します。
Light Talk（軽いおしゃべり）の略だと思っていましたが、Lightning Talkが正しく、またイケてる感じがするのでこちらで覚えておきましょう。

筆者はそのLT会にてKubernetesについてお話ししました。
せっかくお話ししたのに記事を書かないのはもったいないなと思ったので、
今日はKubernetesについての記事を書きたいと思います。

対象者は、Kubernetesって聞いたことあるけど、コンテナとの違いが分からない、
といった理解度の方です。
Kubernetesは奥が深く、また現在進行形で発展中のサービスです。
完全に理解することはかなり難しいですが、Kubernetesって何？って聞かれたときに、最低限のことは答えられようになってもらうことがこの記事の目的です。


## 本文
いきなり結論ですが、表題の通りKubernetesとは「コンテナオーケストレーションツール」です。
コンテナオーケストレーションを一言で言うと、複数のコンテナを統合的に管理するための技術となります。

つまり、Kubernetesはコンテナ自体ではなく、コンテナをまとめる、コンテナの1段階上の層のツールです。

これが分かっていれば、Kubernetesを知っているというレベルにはなったかなと思います。
今日は、Kubernetesをちょっとわかっている、というレベルにまで到達しましょう。

オーケストレーションツールなので、安直にオーケストラに例えてみようと思います。
以下の図を頭に焼き付けてください。

そして、今日は４つの単語を覚えて帰りましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661124/d6b5bfeb-f1c2-3211-ae80-4be5c9f30ef5.png)


## クラスタ　→　オーケストラ
クラスタをオーケストラで例えると、オーケストラそのものを指すことになります。
例えを用いずにちょっと堅苦しく言うと、「コンテナ化されたアプリケーションを実行するノードの集合体」です。
Kubernetesを利用する際の全体を指している、と思っていもらえればOKです。

ここでノードという言葉が出てきました。
ノードはその上にコンテナが立つ土台です。
実体としては、物理マシン（ハードウェアデバイス、サーバー、コンピュータ、エッジにある組み込みデバイスなど）の場合もあれば、コンピュータまたはクラウド上の仮想マシンの場合もあります。 
AWSでいうと、EC2とかですね。

ノードを少し堅い言葉でいうと、「Kubernetes のワークロードが実行される実際の環境を抽象化したもの」です。
Kubernetesにはマスターノードと、ワーカノードという、２種類のノードがあります。
それぞれ見ていきましょう。

## マスターノード　→　指揮者　：　ワーカーノード　→　楽団
マスターノードとワーカーノードをオーケストラで例えると、それぞれ指揮者と楽団を指すことになります。
指揮者であるマスターノード上には、kube-apiserverという司令塔がいたり、etcdという記憶装置がいたりします。
楽団であるワーカーノードには様々な楽器演奏者がいます。これが次に説明するpodです。
ワーカーノードは可用性の為に、複数のノードを立てることが一般的です。

ちなみに、マスターノードというのは古い言い方らしく、現在はコントロールプレーンノードというらしいです。
master, slave問題に近いものがあるのかもしれないですね。

## pod　→　楽器演奏者
podをオーケストラで例えると、楽器演奏者を指すことになります。
基本的には1podにつき1コンテナですが、1podに複数のコンテナを立てることもできます。
一人の演奏者が、複数の楽器を演奏しているイメージですかね。

指揮者であるマスターノードは経営者的な一面もあるので、楽器演奏者であるpodが急に脱退したり、風邪で休んだりしたときは、すぐに新たな楽器演奏者を招集して、楽団の構成を保ってくれます。プロですね。



## まとめ
今日は
Kubernetesとは「コンテナオーケストレーションツール」である。

クラスタ　→　オーケストラ
マスターノード　→　指揮者　：　ワーカーノード　→　楽団
pod　→　楽器演奏者

であることを覚えて帰ってください！
今回の内容は本当に基礎の基礎なので、Kubernetesに興味がある方は以下の資料を参考にしてみてください。


## おすすめ資料
Kubernetes道場
情報が古いですが、とても分かりやすくて、これを見ながらハンズオンもできるのが最高です。
コマンドが古くてエラーが出るときは、エラーをChatGPTに投げたら一瞬で解決してくれました。

https://cstoku.dev/tags/kubernetes/page/3/




Kubernetes完全ガイド
こちらも少し古いですが、図が豊富で、とても丁寧にKubernetesの説明が書いてあります。
自分にはちょっと難しくてあまり理解しきれていないので、もう一度読み直そうと思っています。


https://www.amazon.co.jp/Kubernetes%E5%AE%8C%E5%85%A8%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC2%E7%89%88-Top-Gear-%E9%9D%92%E5%B1%B1/dp/4295009792

EKSワークショップ
AWSでKubernetesが使えるEKSというサービスのハンズオンです。
説明がめちゃくちゃ丁寧ですが、丁寧すぎてコピペするだけで最後まで進めてしまいます。
ただ手を動かすだけではなく、今何をしているのか？を考えながら作業することをお勧めします。

https://catalog.us-east-1.prod.workshops.aws/



Kubernetesの知識地図 —— 現場での基礎から本番運用まで
最近出版された出来立てほやほやの本です。
まだ最後まで読めていないのですが、実際に運用する際に手元に置いておくととても便利だと思います。
ただ、Kubernetesの基本事項はある程度わかっている人向けで、基礎的な概念の説明はほとんどありません。
Kubernetesそのものというよりは、Kubernetesのアドオンのような周辺知識の入門書だと思います。

https://www.amazon.co.jp/Kubernetes%E3%81%AE%E7%9F%A5%E8%AD%98%E5%9C%B0%E5%9B%B3-%E2%80%94%E2%80%94-%E7%8F%BE%E5%A0%B4%E3%81%A7%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E6%9C%AC%E7%95%AA%E9%81%8B%E7%94%A8%E3%81%BE%E3%81%A7-%E9%9D%92%E5%B1%B1-%E7%9C%9F%E4%B9%9F/dp/4297135736

## 2023/08/28追記
LT会で使用したKubernetes紹介スライドです。

https://speakerdeck.com/kisama2000/ekshamanezidosabisuka