Kubernetes(K8s)とは?
正式名称はKubernetesで、操舵手やパイロットを意味するギリシャ語が語源だそうです。
読み方に迷う人が多いと思います。日本人にとっては、ギリシャ語由来の名称を英語圏の発音を経て日本語化するという複雑な流れを経ているので、いろいろな解釈があり、クバネティス / クバネテス / クーベネティスなどの読み方をされています。
またKubernetes はK8sとの略称が用いられることも多く、この場合ケーエイツとも読みます。
カタカナ表記の場合クバネティスとされることが多そうですが、あえてカタカナに置き換える必要もないので、書く場合はKubernetes(K8s)が一般的です。
ここからが本題です。
Kubernetesとは何をするものか?
Kubernetesを簡単に表現するとこうなります。
Kubernetesとは、コンテナ化されたアプリケーションを合理的に運用するために設計されたOSS(オープンソース)のプラットフォーム
簡単に…と書きましたが「コンテナ化」がわからないと、この時点でまったく意味がわからなくなるので、次にコンテナとは何かを説明します。
Kubernetes公式サイトは下記となります。 https://kubernetes.io/ja/
そもそもコンテナって何?
IT用語の「コンテナ」とは、容器、入れ物などを表す英語「container」に由来する技術で、おそらく多くの人がイメージする貨物輸送用のあの入れ物のように「大量のモノ(データ)を、早く、低コストで、簡単に、事故なく運搬する」ために用いられます。
システムにおけるコンテナとは何かを簡単に表現するとこうなります。
コンテナとは、アプリケーションを動作させるのに必要なライブラリやアプリケーションを1つにまとめたもの
もう少し具体的に説明するために、従来の方法とコンテナの何が違うのか、進化の歴史も簡単に紹介します。
かなり昔
昔は物理サーバー上でアプリケーションを実行させていました。ひとつのサーバー上で複数のアプリケーションを実行させた場合、多くのリソースを消費するアプリケーションがあると、他のアプリケーションのパフォーマンスが低下してしまいます。それぞれのアプリケーションを別々の物理サーバーで動かせばこの問題は解決できますが、その維持には多くのコストがかかります。
ちょっと昔(従来の仮想化技術)
1台の物理サーバー上で、複数の仮想マシン(VM)を実行させる仮想化技術が生まれ、サーバーのリソースを効率的に使用できるようになりました(複数のアプリケーションを実行させた場合のパフォーマンスを心配しなくてよくなった)。
各VMは、「仮想ハードウェア」上で「各自の仮想OS」を持つため、仮想ではありますがそれぞれが「完全なマシン」として動きます。
コンテナを使った仮想化技術
「ちょっと昔」のVMと似ていますが、コンテナは「各自のOS 」を持たず、アプリケーション間でOSを共有する仮想化技術です。仮想環境内でOSを動かす必要がないため、VMと比較してコンテナは軽量だといわれます。
そして最初に書いたようにコンテナはアプリケーションを動作させるのに必要なものが1つにまとめられているので、扱いがとても簡単になります。
コンテナのメリット
- 環境構築に要する時間の削減
事前にコンテナイメージを作っておけば、イメージを動かすだけですぐに環境を作ることができます。 - 本番運用における、環境要因によるトラブルの減少
開発環境と本番環境が異なるハードウェアでも、同じイメージを使えば同じ動作をします。 - 障害時の復旧が早い
保存したイメージから新しいコンテナを作ればすぐに復旧できます。