K8s 5分講座#01 Kubernetesとは?
Kubernetes 5分講座へようこそ!
コンテナすら触ったことないのに、Kubernetesでお仕事することになってしまったー!助けてください…(実話です)
それはおめでとう!Kubernetesを押さえている人はまだ日本に多いとは言えないからね。逆に言えば、替えの利かないレア人材になるチャンスと言うわけだ。
そ、それはエキスパートに一歩近づけるということですね!頑張ります!
Kubernetesとは
まずはKubernetesの成り立ちだが、Google社が自社の大規模なシステムを管理するために、コンテナオーケストレーションシステムの開発を行い、これがKubernetesのベースとなった。
Google社が起源なんですね…知らなかった。
2014年にはオープンソースプロジェクトとして発表され、現在はCNCF(Cloud Native Computing Foundation)によって管理されている。
ソースコードを一般公開してみんなで良くしていこうゼ!にしたんですね。
今やコンテナ・オーケストレーション・テクノロジーの中で最も人気があり、最も優れたものの1つと言えるだろう。そんなKubernetesを理解するには2つのことを押さえておく必要がある。
Kubernetesの重要なキーワード2つ…?
コンテナとオーケストレーションだ。この2つの用語に慣れればKubernetesのチカラを理解できるだろう。
いや、まんまやないか~い!
コンテナとは?
コンテナとは何かを見ていこう。ここでは人気のあるコンテナ技術であるDockerを例に説明していく。まず、Dockerの仕組みを理解するために、OSの基本概念を再確認しておこう。
OSは全て、OSカーネルとディストリビューション(ディストロ)の2つで構成されている。
なぜか美味しいフライドチキンが食べたくなってきた。。
Linux、Ubuntu、CentOSなど様々なOSがあるが、これらのOSカーネルは共通してLinuxであり、HWとのやり取りを担当している。
あぁそっちのカーネルさんですね。もちろん分かってましたよ!
各OSを独自のものにしているのはディストリビューションで、UI、ドライバ、コンパイラ、ファイルマネージャ、開発者ツールなどで構成される。
”Linux OS”というのは、OSカーネルとディストリビューションを含めたものを指すのですか?
その通り。Linux OSは、LinuxカーネルとLinuxディストリビューションを含むものを示す。
やった!正解!
同様に、UbuntuやRHEL(Red Hat Enterprise Linux)は、Linuxカーネルに加えて独自ディストリビューションとしてソフトウェア、ツール等を含めたもののことを指すんだ。
Dockerは、同じカーネルをベースにしている限り、その上でどんなOSも動かすことができる。
例えばDockerがインストールされたUbuntu OS上で、Cent OSのような他のディストリビューションをベースにしたコンテナを実行できるということですか?
その通り。各DockerコンテナにはOS独自のディストリビューションがあり、DockerはインストールされたホストのOSカーネルを利用する。
なるほど。OSカーネル部分は共通だからインストールされたホストのカーネルを使うんですね。同じカーネルじゃない場合というのはどういうケースですか?
先ほどの例で言えば、Windowsベースのコンテナだと動作しない。
みんな大好きWindowsが…
Linux OSを搭載したDockerホスト上では、OSカーネルはLinuxカーネルを用いるので、シェアできないのだよ。
Dockerがあればその他のレイヤは何でもOK!と言うわけではないんですね。
ただこれはあまりデメリットにはならない。なぜならDockerは1つのHW上で異なるOSやカーネルを複数実行することを意図していないんだ。
この辺はコンテナと仮想マシンと違う部分ということですね。勉強になりました!
- Kuberentes理解のポイントは2つ!コンテナとオーケストレーションだ!(今日はコンテナ編)
- OSは共通のOSカーネル+独自のディストリビューションで構成
- 同じOSカーネルベースならば、Docker上で他のディストリビューションベースのコンテナが起動できる
ところでKubernetesって、K8sって書かれることがあると思うんですが、何でですか?クバネティスだから、バ!が8なんですかね?
イヤイヤ、8をハと読むのは日本だけだよね。これは英語独特のおシャレな略語なのだよ。Kとsの間にある文字数が8だから、K8sなんだ。
英語の略称はステキですね!もし日本発だったらクバとか、クバネになりそう。。