背景
会社のイベントにてバックオフィスの人にk8sについて説明する機会があり、どのようにわかりやすく説明すれば良いのかChatGPTにも手伝って貰って記事にしてみました。
Kubernetes(k8s)とは?
Kubernetes(k8s・クバネティス)は、アプリケーションを効率的に動かすためのツールです。
特に、多くのサーバーやコンピューターでアプリケーションを同時に動かすときに役立ちます。
Kubernetes は大きな船団(フリート)を管理する船の隊長のようなものです。
Kubernetesの読み方
- クバネティス、 クベルネテス、クバネテス、クーべネティス
Kubernetesの語源
- “Kubernetes”(希: κυβερνήτης、クベルネテス)は、ギリシャ語で航海長または水先案内人を意味し、サイバネティクス(人工頭脳学)の語源でもある。
Kubernetesの略称
- Kubernetes のスペルが K と s の間に8文字あることから k8s
具体的に何をするの?
アプリケーションの管理
Kubernetesはアプリケーションを自動で配置、スケーリング(必要なときに自動で数を増やす)、そしてメンテナンスします。
コンテナ
Kubernetesは「コンテナ」と呼ばれる軽量の仮想化技術を使います。
コンテナは、アプリケーションとその必要なすべてのものを一緒にまとめて動かします。
例えば、アプリケーションのコードや必要なライブラリなどです。
コンテナ(積荷)
コンテナは、船が運ぶ荷物や任務です。
例えば、コンテナにはアプリケーションのコードや必要なファイルが詰まっています。
どうやって動くの?
クラスター
Kubernetesは複数のコンピューターを一つの「クラスター」として扱います。
クラスターは、マスター(制御用のコンピューター)とワーカー(実際にアプリケーションを動かすコンピューター)に分かれています。
クラスター
クラスターは船団全体です。
船団には旗艦(マスター)と複数の護衛艦(ワーカー)があります。
マスター(旗艦)
旗艦は船団全体を統括する船で、すべての指示を出します。
どの船がどの任務を担当するかを決めたり、各船の状態を監視したりします。
ワーカー(護衛艦)
護衛艦は実際に任務を遂行する船です。
旗艦の指示に従い、コンテナ(積荷)を運んだり、特定の作業を行います。
船団(クラスター)は、海の上を航行しながら、積荷(コンテナ)を効率よく運ぶために動きます。
旗艦(マスター)は、どの護衛艦(ワーカー)がどのコンテナ(積荷)を運ぶかを決めます。
各護衛艦(ワーカー)は、指示に従ってコンテナ(積荷)を運びます。
もし護衛艦(ワーカー)の一つが故障しても、他の護衛艦がすぐに代わりに動いて任務を続けます。
ポッド
Kubernetesは「ポッド」と呼ばれる単位でアプリケーションを動かします。
ポッドには一つ以上のコンテナが含まれます。
ポッド
ポッドは、船が運ぶ複数のコンテナをまとめたものです。
ポッドには、一つ以上のコンテナが入っていて、一つの作業単位として動きます。
サービス
サービスは、ポッドにアクセスするための方法を提供します。
例えば、ユーザーがWebアプリにアクセスするための入り口です。
サービス
サービスは、船がどこで積荷を降ろすか、あるいはどの港に行くかを決める指示書のようなものです。
これは、外部から船にアクセスするための窓口とも言えます。
なぜ必要なの?
スケーラビリティ
たくさんのユーザーが一度にアプリケーションを使うときに、自動でサーバーの数を増やして対応できます。
可用性
サーバーに問題があっても、他のサーバーが自動で引き継いで動作を続けるので、アプリケーションが止まりません。
効率的なリソース利用
必要なときにだけリソース(コンピューターの性能)を使うので、無駄が少なくなります。
レストランの厨房で例えると...
Kubernetesは、レストランのシェフのように、多くの料理(コンテナ)を効率的に管理し、注文に応じて適切な料理を提供し、問題が発生したらすぐに対応し、新しいメニューに少しずつ移行することで、レストラン全体がスムーズに運営されるようにします。
- コンテナ:料理
各料理(コンテナ)は、特定のレシピに従って調理された一つ一つの料理です。スパゲッティ、ピザ、サラダなどの料理がそれぞれコンテナに相当します。
- アプリケーション:メニュー
レストランのメニューには、さまざまな料理(コンテナ)がリストアップされています。このメニュー全体がアプリケーションに相当します。
- Kubernetes:シェフ
シェフ(Kubernetes)は、注文が入るたびに必要な料理(コンテナ)を作り、全体の調理プロセスを管理します。どの料理をいつ作るか、どの料理が不足しているかをシェフが判断し、必要な料理を適切に提供します。
例えの詳細
自動スケーリング:
シェフは忙しい時間帯には追加のシェフ(サブシェフ)を呼んで料理を作る速度を上げ、注文が少ない時間帯にはシェフの数を減らして効率を保ちます。
これがKubernetesの自動スケーリングの機能に相当します。
自己修復:
もし料理に問題があれば(例えば、焦げた料理や間違った注文)、シェフはすぐに新しい料理を作り直します。
これはKubernetesの自己修復機能に似ています。
ローリングアップデート:
レストランのメニューが新しくなったときに、シェフは少しずつ新しいレシピに切り替えていきます。
すべての料理が新しいレシピに切り替わるまで、古いレシピを続けることで、突然の変更による混乱を避けます。
これがKubernetesのローリングアップデートの機能です。
まとめ
Kubernetesは、多くのアプリケーションを効率的に管理し、自動化するための強力なツールです。
これによって、アプリケーションが安定して動作し、新しいバージョンに簡単にアップデートすることができます。
これがKubernetesの基本的な考え方です。イメージがつかみやすくなったでしょうか?