ソフト開発エンジニアにとって必要不可欠なツールと言えばオープンソースソフトウェア(OSS)です。
この中で複数の仮想化システムを統合管理するOSSとして世界的に注目されているのが「kubernetes」です。
kubernetesは新しい開発手法として様々な分野で活用されています。
そこでこの記事ではkubernetesの基本用語からシステム導入のメリット、注意点までを解説します。
kubernetesとは?
ここではkubernetesの基礎として用語説明や読み方、勘違いされ易い点をしっかりと解説します。
用語説明
kubernetesとは、仮想化システムを統合管理するためのオープンソースソフトウェアです。
-
仮想化システムを統合管理するためのオープンソースソフトウェア
kubernetesは2014年にgoogleが公開したことにより、世界的な大手クラウドプロバイダーであるgoogleやMicrosoft、Amazonはkubernetesを活用したマネージドサービスを提供し、絶大な支持を得ています。
具体的なマネージドサービスは以下の3つです。
- GKE(Google kubernetes Engine)
- AKS(Microsoft Azure kubernetes Service)
- EKS(Amazon Elastic Container Service for kubernetes)
Kubernetesの読み方
Kubernetesの読み方は「クバネティス」や「クーベネティス」です。
- クバネティス
- クーベネティス
語源はギリシャ語で「船長」や「パイロット」を意味します。
搭乗者を安全に目的地に送り届ける船長やパイロットのようにKubernetesは安全にデーターを運用/管理すること使命です。
KubernetesとDockerとの違い
Dockerとはコンテナ型の仮想化ソフトウェアです。
-
コンテナ型の仮想化ソフトウェア
コンテナ型の仮想化とは1台のホストマシンに複数の独立空間(コンテナ)を作って複数のOSを起動することが可能です。
これに対してKubernetesとは複数のDockerを効率良く連携するコンテナ管理ツールです。
KubernetesとDockerは関連しており、2つを組み合わせることで従来出来なかった画期的な機能を実現しています。詳細は以下で改めて説明します。
kubernetesの仕組み
システムの最小単位がコンテナになります。
次に複数のコンテナを管理するのが「Pod」で、PodはKubernetesが管理できる最小単位です。
その上層に複数のPodを集合する「Node」があります。更に上層には「Cluster」があり、「まとまり」という意味も持っており、システムの最上位に位置付けられています。
全体システムを司るKubernetesは「コンテナオーケストレーションツール」とも呼ばれており、システム全体を安全かつ効率的にコントロールしています。
kubernetesのメリット
kubernetesのメリットについて5つに絞って説明します。
サービスディスカバリーが可能
サービスディスカバリーとは日本語にすると「サービスの検出」という意味合いで使われています。
本機能により、kubernetesではサーバー上でどんなアプリケーションが動作しているだけでなく、ポート番号やIPアドレスなども知ることが出来ます。
オンプレミスとクラウドの両環境で利用可能
kubernetesはクラウド環境はもとより、自社サーバーのオンプレミス環境でも利用可能です。
これにより新規にクラウド環境を整備することなく、kubernetesの導入が出来ます。
自己回復機能を持つ
kubernetesは自己回復機能を持っているため、コンテナの削除や動作不良等の不具合があっても自動で回復します。
ストレージの管理が可能
Kubernetesはコンテナのストレージ管理が可能です。
ストレージはコンテナに書き込まれ、Podに有効期限内のみ保存されます。
特定企業に依存していない
Kubernetesはgoogleが公開しましたが、その後、CNCF(Cloud Native Computing Foundation)に移管されてオープンソースとして万人に無償提供されています。
kubernetes導入の注意点
kubernetesを導入する際の注意点を3つに絞って説明します。
日本語の情報が少ない
kubernetesは欧米を中心に導入が進んでいるため、日本語の情報が少ないです。
このため、kubernetesを学ぶためにはある程度、英語のリーディング能力が必要です。
初心者には難解である
管理システムやOS等の全てが入っているPaaS(Platform as a Service)とは異なり、kubernetesは重要なところは自分でシステムを構築する必要があるため、初心者には難解でハードルが高いです。
Kubernetesクラスターのアップデートは行わない
Kubernetesクラスとのアップデートは厳格で周辺環境の知識がないと失敗する恐れがあります。
従って本番環境で正しく動作しているシステムでは無闇にアップデートするのはやめましょう。
もし、どうしてもアップデートする場合は、新規にクラスタを構築することを推奨します。
用語の解説
ここではkubernatesを扱う上で知って置くべき用語を3つ紹介します。
コンテナ
コンテナとは、アプリケーションの環境を仮想的に構築する技術の1つになります。
コンテナ内は、コマンドやライブラリ等のアプリケーションを動作する環境が集められています。
クラスター
クラスターとは、コンテナ化されたアプリケーションを実行するノード(Node)の集合です。
ノード
ノードは、アプリケーションを実行しているマシンのことです。
ノード自身は1台の物理サーバーと考えて良いです。
kubernatesの将来性
サービス開発にコンテナを使う仮想化技術は注目されており、kubernatesの導入は今後、需要が拡大すると考えられます。
今やkubernatesは基本的にどのマネージドサービスでも動くことになっており、事実上の標準(デファクトスタンダード)です。
従いましてkubernatesはクラウド時代には必要不可欠な存在になると想像できます。
まとめ
この記事では新しい開発手法として様々な分野で活用されているkubernetesについて基本用語から導入のメリット、注意点までを解説して来ました。
kubernetesは日本でも注目が集まっています。
しかしながら調査会社であるIDC Japanによる今年の調査結果では仮想化技術のコンテナを導入している企業は14.2%です。
この理由はコロナ禍により企業が新規の設備投資を絞っていることが一因です。
費用対効果は海外企業で証明されていますので、日本企業でkubernetesの導入が今後、本格化すると考えられます。