ここではKubernetes(以後k8s)についてできるだけ噛み砕いて知ることを目指して説明します。
k8sは天下のGoogle様が創業当時から使用していたシステムを凡人である私たちにも使えるようにしたものです。(それでも禿げるほど難しい)
その後別の記事にてUbuntu20.04にてKubernetesのマスターノード、ワーカーノードを構築する方法を記していきます。ここではノードを作るだけで何かサービスを起動したりはしません。第一歩みたいなものですね。
目次
・小話
・Kubernetesの基本の「き」だけでも学ぼう
・k8sの用語をふわっと知っておこう
・まとめ
小話(読み飛ばして下さい。)
最近k8sに興味を持ってます。ロードバランサーとか複数マシンで何かしらのシステムを運用したいなと思ったことと、就職での強みとなるらしいです。(人事部の方へ、もしこのブログ見てたら僕を雇って下さい。)
そういうわけでk8sを試してみようと思い、実際に環境構築をしてみました。正直半端なく大変でした。システムがうまく噛み合えばコマンドをちょちょいとコピペするだけで生えてきますが、何かがうまく動かないとそれをなんとか治そうとして半日から一日かかります。
ここでは自分の中で上手くいった環境にて紹介していきますが、恐らく人によっては多少違った環境でも問題なく構築ができるかと思います。
また、公式が日本語のドキュメントを公開していますが、ぶっちゃけ日本語を読んでいる気がしません。一応リンク貼っときますね。このドキュメントを見て「めっちゃわかる!!!」て人はこの記事をいますぐ閉じましょう。
Kubernetesの基本の「き」だけでも学ぼう
k8sは「コンテナ仮想化」!
k8sは以前のproxmox紹介編でもあった「仮想化」を使用しています。
下の画像みたいなものですね。
ただし、ProxmoxのLXCコンテナといくつかの相違点があります。
LXCコンテナの特徴
・LXCコンテナは動作が軽いPCをもう一個作るよ
・コンテナを立てた後に、君自身でパッケージのインストールや環境を作ってもらうよ
・クローンを作ることが面倒だから複数台で運用することには向いてないよ
・仮想マシンを何個も作りたい時におすすめだよ
・簡単な方だよ
k8sの特徴
・iPhoneやAndroidみたいなアプリが生えてくるよ
・コンテナ自体がアプリみたいなものだから、ぶち込んですぐ使えるよ
・アプリのクローンが簡単に作れるから複数台で運用して負荷を分散できるよ
・アプリケーション開発におすすめらしいよ(開発しないから知らない)
・クソむずいよ
こんなところですかね。k8sはマジでむずい、本当にむずい。けどMなのでやります。
k8sの用語をふわっと知っておこう
k8sにはいくつか(いや、山ほど)の専門用語があります。ここでは主要な概念のみを書き記します。
ノード
物理的なパソコンのことです。複数のノードがあったら実質的に複数のパソコンがあるようなものです。
ポッド
仮想化しているコンテナをひとまとめにしている空間みたいなものです。必要に応じてでっかくなったり、増えたり、小さくなったりすることで、負荷分散を行っています。仕事が増えたら人員を増やすってわけです。
レプリカセット
上のポッドを更にひとまとめにしています。司令室のようなものです。ここでは自分でルールを作り、「これ以上重くなったらこういう操作をする」と言ったようなマニュアルを書いておけば、あとはこいつが勝手に操作をしてくれます。
サービス
外部に公開するために使います。ここを設定しないと、ブログのサーバーを立てても誰も見れないと言った状況に陥ります。
ネームスペース
仮想的に環境を分離するときに使います。上にあるポッドやサービスをひとまとめにして隔離することができるので、開発する場所と実際に運用する場所を分けることができるってことです。
ノードの中にレプリカセットがあって、更にその中にポッド、そしてコンテナの順に存在しています。
なお次回のUbuntuにk8sを構築する記事では、ノード以外の用語は使用しません。
ここだけでも頭が爆発しそうですよね。私はしました。Googleの人たちって天才なんやなって…
まとめ
一度ここで一区切りとなります。この時点で半端なく難しくて複雑ですが、これでも恐らく基本以前なのだと思います。そんくらいk8sは難しいです。というか自分もロクに理解できていません。私と一緒に勉強して行きましょう。
初めにも書いた通り、次の記事では実際にUbuntuにてk8sをインストールしていきます。