1.初めに。
この記事の趣旨。
- インフラってなんだろう
- サーバーサイドの処理を学ぼう
- 技術をつけてより高度なシステムを作ろう
という観点で進めます。
2.Kubernetesってなに?
そもそもKubanetes(クーバネティス)・k8sとは、
一つのノード(箱のようなもの)の中で、
複数のアプリを動かすことでリソースを削減しつつ、
耐障害性を高めたものになります。(ざっくり言うと)
サーバーをいくつも用意するより一つのサーバーで
複数の物を動かすほうが無駄なく使えるよねっていうもの。
理論としてはDockerと同じです。
これらのシステムを使うメリットとして、
- 障害に強い
- 環境を移行しやすい
- とっさのリソース不足に対応しやすい
というのが挙げられます。
まぁ、要するに、人手足りないから臨時でバイトに来てもらうみたいなことが可能なわけです。
3.じゃあ、インフラって?
インフラというのは実に幅広い意味を持つので、
ここではアプリやサービスをささえる基盤として定義します。
例えば、WEBサーバーや、メールサーバーといったものも捉えようではインフラです。
こういったものは稼働率をいかに高め、障害時にいかに迅速にバックアップ環境に退避させるかが重要になります。
こういった際に環境の移行しやすいシステムは大事と言えるでしょう。
4.じゃあ、具体的にはどんなシステムで動いてるの?
ここで一つ大事になる考え方に、
システムの全体像。
k8sでは、ノードの繋がったネットワークをクラスタと言います。
このクラスタの中には、それぞれのサーバー(ノード)があり、その中でネームスペース(ns)と言われる領域のようなものがあり、その中でpod(アプリ)が動いています。
要するに、会社の様な大きな纏まりが、クラスタ
その中の支部の様なざっくりとした纏まりが、ノード
更にその中にある部署が、ネームスペース
そしてその中で会社員、
podが働いていると思えばいいかなと思います。
Ex.kubanetesとDockerって関係あるの?
Kubernetesは、性質として構成された状態をなるべく保とうとします。
逆に言えばこの性質を活かして、定期的にDockerコンテナを監視させれば、コンテナがエラーで止まったら設計図に基づいて復旧すると言ったこともできるわけです。
或いは負荷分散であるとか、そういったインフラが崩壊しにくくなるシステムと言ってもいいかもしれないです。
5.終わりに
実は私より詳しい開発者がUniProjectという創作サークルにいたりするのでそういう方に話を聞くのが良かったりするのかもしれないです。
discord↓
https://discord.gg/nmjdqaZYVg
kubanetesを使いこなしてよりよい環境構築を!