このサイトはジャパニアス株式会社をスポンサーとして、
Zenkenが運営しています。
市場価値の高いITエンジニアへの道~エンジニアQUEST~

Kubernetes(クバネティス)

目次

Kubernetesとは

Kubernetesは、コンテナ仮想化ソフトウェアを管理・自動化するためのオープンソースソフトウェアです。仮想化ソフトウェアとは、一つのサーバー上に複数台の仮想マシンを運用できるシステムのことを言います。

コンテナについて

Kubernetesを理解するためには、コンテナについての理解が必要です。コンテナとは、アプリケーションの動作環境を貸そう構築する技術のこと。ホストとなるOS上に合う里ケーションやライブラリなどをまとめたものです。

コンテナを1つの単位としてシステムから分離できます。

従来の仮想化ソフトウェアでは、1つの仮想環境の中にすべてのリソースを構築することしかできませんでした。異なるOS環境を使う必要があるため、毎回OSまで作らなければいけません。コンテナは、複数のOSが実行しているシステムを1つにまとめられるため、OS周辺の環境は共通利用しながらCPUやメモリはコンテナ単位で管理できます。別のOSを作成する必要がありません。

ただし、コンテナはホストOSごとに独立した環境を構築するため、別ホストで運用する場合の管理が難しいというデメリットがあります。そこで、複数ホストでコンテナを管理・運用できるのがKubernetesです。

Dockerとの違い

Kubernetesと似た役割のソフトウェアに、Dockerがあります。どちらもコンテナを用いてアプリケーションを実行するためのソフトウェアです。両者の違いは、実行される場所と利用目的にあります。

実効される場所は、Kubernetesがクラスタ、Dockerが単一ノードです。

クラスタは、コンテナの配置や削除を行うときに指示を出す部分。ノードはクラスタを構成する各サーバーのことです。

この実行場所の違いが、利用目的に影響します。Kubernetesは各コンテナを管理すること。Dockerはアプリケーションを各コンテナに分離することです。

どちらかのみの利用ではなく、連携して利用することでコンテナを上手く活用できます。

Kubernetesの仕組み

複数のコンテナを管理するKubernetes Podがあり、複数のPodはNodeにまとめられています。そのNodeが集まってクラスターとなります。

Kubernetesがコンテナの配置や削除を行う際、直接指示を出すのがクラスターです。クラスターはKubernetesの最上位階層に位置します。

Kubernetesのメリット・デメリット

メリット

Kubernetesを利用すると、アプリケーションの公開を自動化できます。万が一不具合があった場合でも、修正後のバージョンへ入れ替えたり、ロールバックしたりする作業も自動化が可能です。また、自己回復機能があるため、障害に強いため、コンテナがダウンしたり操作ミスで削除したりといった時も焦らず操作できます。クラウドはもちろん、オンプレミスでも利用可能です。環境依存の心配がありません。

デメリット

管理マシン・実行マシンとしての物理サーバーかクラウドサーバーが必要です。現システムの構成や環境によっては、新規でサーバーを用意するための初期投資が必要になります。定期的にアップデートされるため、最新の機能などを継続的に学ぶ必要があります。高い拡張性がある反面、選択肢が多いため、使い方を明確にしておかないと、十分に使いこなせません。事前の準備が必要です。

Kubernetesの用語

  • Pod
  • Service(ClusterIP、NodePort、LoadBalancer、ExternalName)
  • Namespace

Podは、実行できるアプリケーションの最小単位を意味します。共有ストレージやネットワークなどをファイルで設定可能です。

Serviceは、Podとの通信を容易にするためにエンドポイントを提供する機能。クラスター内でPodが利用できるIPアドレスであるClusterIP、外部に公開されるポートであるNodePort、NodePortを拡張したLoadBalancer、外部サービスに公開する名前であるExternalNameの 4種類があります。

Namespaceは、クラスターの分離機能です。複数のユーザーでクラスターリソースを分割できます。

固定バナー固定バナー
目次