5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

バックオフィスの人でもわかる!k8sってなに?

Posted at

背景

会社のイベントにてバックオフィスの人にk8sについて説明する機会があり、どのようにわかりやすく説明すれば良いのかChatGPTにも手伝って貰って記事にしてみました。

Kubernetes(k8s)とは?

Kubernetes(k8s・クバネティス)は、アプリケーションを効率的に動かすためのツールです。
特に、多くのサーバーやコンピューターでアプリケーションを同時に動かすときに役立ちます。

Kubernetes は大きな船団(フリート)を管理する船の隊長のようなものです。

Kubernetesの読み方

  • クバネティス、 クベルネテス、クバネテス、クーべネティス

Kubernetesの語源

  • “Kubernetes”(希: κυβερνήτης、クベルネテス)は、ギリシャ語で航海長または水先案内人を意味し、サイバネティクス(人工頭脳学)の語源でもある。
image.png (26.5 kB)

Kubernetesの略称

  • Kubernetes のスペルが K と s の間に8文字あることから k8s

具体的に何をするの?

アプリケーションの管理
Kubernetesはアプリケーションを自動で配置、スケーリング(必要なときに自動で数を増やす)、そしてメンテナンスします。

コンテナ
Kubernetesは「コンテナ」と呼ばれる軽量の仮想化技術を使います。
コンテナは、アプリケーションとその必要なすべてのものを一緒にまとめて動かします。
例えば、アプリケーションのコードや必要なライブラリなどです。

コンテナ(積荷)
コンテナは、船が運ぶ荷物や任務です。
例えば、コンテナにはアプリケーションのコードや必要なファイルが詰まっています。

どうやって動くの?

クラスター
Kubernetesは複数のコンピューターを一つの「クラスター」として扱います。
クラスターは、マスター(制御用のコンピューター)とワーカー(実際にアプリケーションを動かすコンピューター)に分かれています。

クラスター
クラスターは船団全体です。
船団には旗艦(マスター)と複数の護衛艦(ワーカー)があります。

マスター(旗艦)
旗艦は船団全体を統括する船で、すべての指示を出します。
どの船がどの任務を担当するかを決めたり、各船の状態を監視したりします。

ワーカー(護衛艦)
護衛艦は実際に任務を遂行する船です。
旗艦の指示に従い、コンテナ(積荷)を運んだり、特定の作業を行います。

船団(クラスター)は、海の上を航行しながら、積荷(コンテナ)を効率よく運ぶために動きます。
旗艦(マスター)は、どの護衛艦(ワーカー)がどのコンテナ(積荷)を運ぶかを決めます。
各護衛艦(ワーカー)は、指示に従ってコンテナ(積荷)を運びます。
もし護衛艦(ワーカー)の一つが故障しても、他の護衛艦がすぐに代わりに動いて任務を続けます。

ポッド
Kubernetesは「ポッド」と呼ばれる単位でアプリケーションを動かします。
ポッドには一つ以上のコンテナが含まれます。

ポッド
ポッドは、船が運ぶ複数のコンテナをまとめたものです。
ポッドには、一つ以上のコンテナが入っていて、一つの作業単位として動きます。

サービス
サービスは、ポッドにアクセスするための方法を提供します。
例えば、ユーザーがWebアプリにアクセスするための入り口です。

サービス
サービスは、船がどこで積荷を降ろすか、あるいはどの港に行くかを決める指示書のようなものです。
これは、外部から船にアクセスするための窓口とも言えます。

イメージ
image.png (1.6 MB)

なぜ必要なの?

スケーラビリティ
たくさんのユーザーが一度にアプリケーションを使うときに、自動でサーバーの数を増やして対応できます。

可用性
サーバーに問題があっても、他のサーバーが自動で引き継いで動作を続けるので、アプリケーションが止まりません。

効率的なリソース利用
必要なときにだけリソース(コンピューターの性能)を使うので、無駄が少なくなります。

レストランの厨房で例えると...

Kubernetesは、レストランのシェフのように、多くの料理(コンテナ)を効率的に管理し、注文に応じて適切な料理を提供し、問題が発生したらすぐに対応し、新しいメニューに少しずつ移行することで、レストラン全体がスムーズに運営されるようにします。

  • コンテナ:料理

各料理(コンテナ)は、特定のレシピに従って調理された一つ一つの料理です。スパゲッティ、ピザ、サラダなどの料理がそれぞれコンテナに相当します。

  • アプリケーション:メニュー

レストランのメニューには、さまざまな料理(コンテナ)がリストアップされています。このメニュー全体がアプリケーションに相当します。

  • Kubernetes:シェフ

シェフ(Kubernetes)は、注文が入るたびに必要な料理(コンテナ)を作り、全体の調理プロセスを管理します。どの料理をいつ作るか、どの料理が不足しているかをシェフが判断し、必要な料理を適切に提供します。

例えの詳細

自動スケーリング:
シェフは忙しい時間帯には追加のシェフ(サブシェフ)を呼んで料理を作る速度を上げ、注文が少ない時間帯にはシェフの数を減らして効率を保ちます。
これがKubernetesの自動スケーリングの機能に相当します。

自己修復:
もし料理に問題があれば(例えば、焦げた料理や間違った注文)、シェフはすぐに新しい料理を作り直します。
これはKubernetesの自己修復機能に似ています。

ローリングアップデート:
レストランのメニューが新しくなったときに、シェフは少しずつ新しいレシピに切り替えていきます。
すべての料理が新しいレシピに切り替わるまで、古いレシピを続けることで、突然の変更による混乱を避けます。
これがKubernetesのローリングアップデートの機能です。

DALL·E 2024-05-14 16.41.32 - An illustration of a restaurant kitchen representing Kubernetes. The kitchen is bustling with activity, with a large cooking station in the center sur.webp (240.5 kB)

まとめ

Kubernetesは、多くのアプリケーションを効率的に管理し、自動化するための強力なツールです。
これによって、アプリケーションが安定して動作し、新しいバージョンに簡単にアップデートすることができます。

これがKubernetesの基本的な考え方です。イメージがつかみやすくなったでしょうか?

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?