Dockerは仮想化。
Kubernetesはクラスタ。
仮想化、知ってる知ってる。クラスタ?同じでしょ?
・・・いいえ。180度違います。
その最大の違いは。ずばり。
目次
Docker(仮想化)とKubernets(クラスタ)の最大の違い
Docker Podman VMware 仮想化と
Kubernetes クラスタの決定的な違いは
- 仮想化「1台のPCでプロセス1000個動かすぞー」
- クラスタ「1000個のプロセスを1000台のPCで動かすぞー」
仮想化は1台のPCを皆で使いましょう
Windows 11は、およそ200個のプロセス(アプリやサービス)が動作します。
「仮想化」は、1台のPCで、複数のOS=Windows 11を5個起動すれば、プロセス1000個~を動かす形です。
1台のPCを、皆で使いましょう。という考え方。
クラスタは200台のPCを1人で使いましょう
コンテナでWordPresssを起動した場合。
Docker仮想化では、1台のPCで、MariaDBとHttpdが動作します。
Kubernetsクラスタでは、2台のPCそれぞれで、MariaDBとHttpdが動作します。
つまり、Kubernetsは、200個のプロセスを、200台のPCで動かすための基盤~クラスタ基盤となります。
仮想化とは、考え方が真逆といえますよね。1台を皆で使うか。200台を一人で使うか。
クラスタに高価なPCは必要ないけれど 複数ユーザが快適に接続
VMWareやDockerのような仮想化は、高価なPCが必要です。
Kubernetsは、極端な話、仮想化の1/1000の性能のPCを、1000台接続して、同じ性能として使いましょう、という考え方になります。
1000台のうち、1~2台故障しても、Kubernetesが別の元気なPCに、プロセスをライブ・マイグレーションしてくれるため、使用者は故障に気づきません。
高価なPCを皆で使っても、故障すればサービス停止です。
クラスタは、故障してもプロセスが元気なPCに移動します。実際は、200台を一人で使うのではなく、複数のユーザが同時に使用してこそ、クラスタの性能が活かせるはずです。
まあ、何が言いたかったかというと。
- クラスタを、仮想化の延長として見ているのならそれは間違い。
- クラスタに高価なPC(スケールアップ)は必要ない。安価なPCをたくさん接続する(スケールアウト)という考え方。
このあたりが、クラスタの肝だと思います。
同じコンテナ技術ですが、方向性は真逆ですよ。と記録させて頂きます。