k8s(Kubernetes)について軽く勉強した備忘録
ドキュメント読んでみたけど結構挫折したので、YouTubeのこの動画参考にした。挫折した人向けと書いているだけあってとってもわかりやすい。
https://www.youtube.com/watch?v=r0NpHb-6IvY
学習のきっかけ
・配属チームのプロダクトがk8s(GKE)を使っている
・インフラ(CI/CDとかにも)少し興味がある
・k8sは習得難易度が高いため、まずはインターネットやコンテナの基礎知識からという意見も多いが
そんなこといってたら一生手が付かない気がしたのでとりあえずやってみた
わからないことはその都度調べていけば良いと思った
筆者の能力値
・新卒4ヶ月目のひよっこ(Web系)エンジニア
・基本的なプログラミングの文法は書ける
・Docker関連のファイルはそこそこ読める
・業務内容はフロントが多く、バックエンドにいくにつれてついていけなくなる
(かといってフロントなら任せろ!っていうほどできるわけでもない)
k8s(Kubernetes)とは?
クバネティスと言われているが、私の職場ではケーパーエスと言われることが多い。
呼び名は人によって違うらしい。IT用語って人によって読み方違うのなんなんおこ。
コンテナオーケストレータといって、複数のコンテナ管理を効率化してくれるらしい(ようわからん)。
つまりコンテナが少ないアプリケーションとかだとあんまり強みが発揮されない。
私はこれみて最初docker-composeとの違いがわからなかった。
Dockerにはk8sと同じようなものでDockerSwarmというものがあるらしい。
個人的になるほどと思ったdocker-composeとコンテナオーケストレータ(DockerSwarm、k8s)との違いを軽く箇条書き
docker-compose
・同じホストでコンテナーを起動する
・クラッシュ時の考慮などこちらで用意してあげないといけない
コンテナオーケストレタ
・複数のホストでコンテナーを実行および接続する
・クラッシュしたときに新しく代わりのコンテナを自動で開始する
なんかもっと色々あるんだが、とにかくDocker単体だとエンジニアが手動でやらないといけない
めんどくさい色んな何がしをk8sは自動で行うよ!ってやつらしい。
まあそのめんどくさい何がしの理解を結局しないといけないので上級者向けの技術になってしまう。
k8sの絵本なるものもあるんで、サーバーの歴史の流れとか踏まえてみたい人はどうぞ
先人は我々がうわあぁわからんとなることを見越してこんなものを作ってくれてるんだなあ。
ただ筆者は鈍感すぎて、これみてもキリンさん大変だねえで終わった。
一番上にはっつけた動画ではk8sの概念を大きく3つに分けて説明している
・コンポーネント
・リソース
・ソフトウェア
コンポーネント
k8sはControl Planes(マスターノード)、Nodes(ワーカーノード)の2種類で構成されている。
基本的にユーザー(俺ら)が事前にコンテナはこうあってほしい!というのをマスターノードに伝えて、ワーカーノードがそれを実行するイメージ。
実際にコンテナが動作する環境はワーカーで、正確にはワーカーが必要情報をマスターに取りにってるそう。
リソース
リソースとあるが、アプリケーション実行の仕組みとか流れをリソースという存在たちで抽象化して、k8s側から情報を与えやすい
外部公開の仕組みをAリソースとすると、外部公開したいときはAリソースにはこの情報与えておけばOKとなる。オブジェクトライクに管理できる。
ソフトウェア
これは正確にはk8sの概念ではなく、k8sと関連するDockerとかiptablesの話
おわり
各概念項目については気が向いたら記事化してまとめようと思う。
とりあえず記録残すかなんかしないと継続しなくなるので、インターバル感覚で記事化した。
これみている人のタメにならない気がするけど、まあいっか。
おわる(眠い)。
Discussion