コンテナ管理プラットフォーム「Kubernetes」について初心者にも分かりやすく解説するとこうなる

GIGAZINE



Dockerなどのコンテナ技術について学習していると「Kubernetes(K8s)」というコンテナ管理プラットフォームの名前を目にすることがありますが、初心者にとってKubernetesの仕組みや用途は理解しづらいものです。そんなKubernetesの仕組み・用途・利便性についてクラウドストレージサービスを運営するBackblazeがまとめています。

What Is Kubernetes?
https://www.backblaze.com/blog/what-is-kubernetes/

・目次
◆Kubernetesは何に役立つのか?
◆Kubernetesの基本的な仕組みは?
◆Kubernetesで可能なことは?
◆Kubernetesでのデータ永続化とは?

◆Kubernetesは何に役立つのか?
KubernetesはGoogleによって開発されたコンテナ管理プラットフォームで、リソースを適切に配分しながら複数のコンテナを管理することができます。KubernetesはDockerなどのコンテナ構築ツールと混同されることがありますが、Dockerはコンテナを構築するためのツールであり、Kubernetesはそれらのコンテナを管理することを目的としているため、両者は競合するものではありません。コンテナ・Docker・Kubernetesそれぞれの仕組みや用途は、以下の記事でザックリと解説しています。

コンテナ・Docker・Kubernetesについて初心者にも分かりやすく解説するとこうなる – GIGAZINE


コンテナ技術の登場によって互換性の確保やシステムの移動が容易になりました。しかし、「コンテナの1つがダウンした」「コンテナで管理しているウェブサービスのユーザーが急増して、処理が追いつかない」といった問題が発生した場合、コンテナ自体に問題の解決手段を持たせるには大きなコストがかかります。一方でKubernetesを用いれば膨大な数のコンテナを適切に管理可能なため、上記の問題にも比較的簡単に対処できます。

BackblazeはKubernetesのコンテナ管理能力の高さを示す例として、人気スマートフォン向けゲーム「ポケモンGO」のサーバーでKubernetesが利用されていることを挙げています。なお、ポケモンGOリリース時のGoogleエンジニアの奮闘は、以下の記事で詳しく解説しています。

ポケモンGOというモンスターゲームが世界中で熱狂を起こしたときGoogle内部では何が起きていたのか – GIGAZINE

By Eduardo Woo

◆Kubernetesの基本的な仕組みは?
Kubernetesはコンテナやリソースを「Pod」「ノード」「クラスター」といった単位でオブジェクトを管理しています。それぞれを簡単に説明したものが以下。

Pod:Kubernetesで管理可能なオブジェクトの最小単位でコンテナやストレージリソースなどが含まれる。1つのPodに複数のコンテナを含めることも可能。
ノード:単一もしくは複数のPodが配置されたマシンや仮想マシン。各ノードにはPodの実行に必要なサービスが含まれる
クラスター:複数のノードの集合

上記のオブジェクトに加えて、イベントを検出してPodやノードを管理する「コントロールプレーン」と呼ばれるコンポーネントが存在します。


◆Kubernetesで可能なことは?
コンテナを用いてアプリケーションを開発する場合、一般的にアプリケーションを機能ごとに細分化して実装する「マイクロサービス」と呼ばれる手法が用いられます。Kubernetesを用いると、マイクロサービスを各Podに分散して配置して以下のような機能を利用可能になります。

スケーリング:アプリケーションを実行するユーザーが増えた際に、追加のPodを起動して負荷を分散する
自動修復:コードエラーやハードウェア障害によってPodからの応答が止まった場合、新たなPodを起動して処理を継続する
負荷分散:ノードに大きな負荷が加わった際に、Podを他のノードに移動させる
ストレージオーケストレーション:ローカルやクラウド上のストレージを必要に応じて割り当てる

上記の機能を利用する際にアプリケーションに変更を加える必要はなく、Kubernetesの設定ファイルに変更を加えるだけで利用可能です。Backblazeは、「アプリケーションは単にマイクロサービスを実行するだけでよく、複雑な管理はKubernetesが行います。これがKubernetesの大きなメリットです」と述べています。


◆Kubernetesでのデータ永続化とは?
Kubernetesを利用する際に各マシンの内部ストレージを用いると、何らかの理由でPodを削除した時にデータも一緒に削除されてしまいます。そのため、データの削除を防ぐためには「マシンの外部にストレージを用意し、Podの起動時や実行時に外部ストレージを参照する」という環境を構築する必要があります。

Backblazeは外部ストレージを構築する場所として「ストレージ領域を無限に拡張できるクラウドストレージ」の利用を推奨しています。

この記事のタイトルとURLをコピーする

Source