Kubernetesとは?仕組みと構造をわかりやすく解説します
Kubernetesとは、コンテナの運用管理と自動化を目的に設計されたオープンソースのシステムです。
Kubernetesの複雑で難しいイメージを少しでも改善するために、この記事ではポイントを整理しました。KubernetesとDockerやコンテナとの関係、おもな仕組みを中心にわかりやすく解説しています。

Kubernetesとは?コンテナやDockerとの関係性

まずは、Kubernetesに理解にどうしても必要なキーワードをまとめています。
Kubernetesとは?
Kubernetesはクバネティス、またはクーベネティスなどと読みます。ギリシャ語で、操舵手 やパイロットという意味があるそうです。またK8sとも呼ばれています。公式サイトによれば、Kubernetesのスペルで、最初の「K」と最後の「s」の間にある「ubernete」の文字数が8あるため、「K」と「8」と「s」をつなげて「K8s」になっています。
Kubernetesにとって操作の対象は、Dockerなどのコンテナです。この対象が大きくなればなるほど、Kubernetesは威力を発揮します。Dockerなどが増えて、システム全体を効率良く管理したり、効果的に組み合わせたりする力は、Dockerには不足しているからです。
Kubernetesの登場により、複数のDockerなどのコンテナの管理や自動化が進み、この仕組みは「コンテナオーケストレーション」と呼ばれるようになりました。
コンテナ型の仮想化技術とは?
仮想化技術を支える手段には種類があります。具体的には、ハイパーバイザーやホスト型ともにコンテナ型が公開されています。
さらにコンテナにも種類があり、Dockerはその一つです。Kubernetesが対象としているコンテナは、このDockerが標準になっています。その主な理由には、Dockerの動作の速さや移動のしやすさなどの特徴があるからです。
KubernetesとDockerの違い
ここまでみてきたように、この2つは目的が異なります。実はDockerにも、複数のDocker自体の管理や自動化をする機能(Docker Swarm)があります。ただコンテナ間の設定や管理で、できないことがあります。小規模の場合は別途作業すればいいのですが、規模が大きくなるほど煩雑になります。
そこでKubernetesのような専用ツールによって、規模の大きいDockerの管理や自動化をするようになりました。
Kubernetesのメリット
Kubernetes利用による「コンテナオーケストレーション」で、複数のDockerを管理する手間が減り、コストを削減することができます。具体的にはこちらの情報にあるように、Kubernetesの利用により以下の課題を解決できるようになります。Docker自体では、実現がむずかしい項目ばかりです。
- 複数のDockerホストの管理
- コンテナのスケジューリング
- ローリングアップデート
- スケーリング / オートスケーリング
- コンテナの死活監視
- 障害時のセルフヒーリング
- サービスディスカバリ
- ロードバランシング
- データの管理
- ワークロードの管理
- ログの管理
- Infrastructure as Code
- その他エコシステムとの連携や拡張
【引用元】
なぜKubernetesが必要なのか?
Kubernetesの主な仕組み

次にKubernetesの構成を簡単にご説明します。それぞれの機能は複雑ですが、意味のあるものばかりです。繰り返しになりますが、目的は「コンテナオーケストレーション」です。
Kubernetes Cluster(クラスター)
一般的に、クラスターには「まとまり」という意味があります。IT分野では、コンピュータ・クラスターのように、複数台のコンピュータを結び付けまとめた仕組みを指しています。Kubernetesクラスターも同様で、公式サイトでは「単一のユニットとして機能するように接続された、可用性の高いコンピュータのクラスター」としています。
なお「可用性」とは、システムを継続して稼働させる考え方です。例えば、ひとつの機器が故障しても他の正常な機器に自動的に切り替わり、利用者には影響ができないようにするしくみです。
Kubernetesクラスターを作成するためには、Minikubeというツールを使用します。公式サイトでは、コマンド操作が体験できるデモ環境が用意されています。

namespace
公式サイトによれば、同一の物理クラスター上で動作する複数の仮想クラスターのことです。namespace(名前空間)は、比較的規模が大きい環境で導入が推奨されています。これにより、1つのKubernetesクラスターを複数チームで利用できるようになりました。具体的には、誰がどのような権限があるかを設定し、Kubernetesクラスターを分離しています。
pod
Kubernetesが管理できる最小単位で、Dockerなどのコンテナが 1つ以上含まれています。ポイントは、KubernetesがDockerなどのコンテナを直接管理しているのではなく、pod経由であることです。podにはIP アドレスが自動的に割り当てられ、コンテナ間で共有するストレージが含まれています。こちらも公式サイトに、コマンド操作でpodを体験できるデモ環境が用意されています。
