入門 Kubernetes

f:id:asmsuechan:20210117190335j:plain

k8sについて全然知識がなかったのでとりあえず読んだ。実務で使う前にもう一回サラッと読んでもよさそう。k8sクラスタ上で動くシステムの概形を掴んでいればあとはコマンドを覚えるだけだからそれは実際に使う時に使えるようになればよいはず。

全体的な感想

k8sの概要をザッと知りたい時に便利だと思う。結構細かいコマンドが書かれているのである程度k8sを使ったことある人間にも身になることが多そう。しかしこの本の原著が書かれたのが2017年で結構時間が経っているので、意図したように動かないコマンドが多かった。手を動かしながら学ぶには別のネット上にあるリソースを使うほうがよい。

1章 Kubernetes 入門

コンテナとk8sの核となるコンセプトはイミュータブル、宣言的設定、オンラインで自己回復するシステムの3つ。

インフラのイミュータブル性とは、一度システムで成果物を作成したらユーザーの更新があっても成果物が変更されないこと。変更をする際は全く新しいイメージで行う。これに対してミュータブルな更新とは、例えばサーバー上でapt updateを走らせてミドルウェア等を更新してしまうこと。イミュータブルであることにより、変更ログを置いやすかったりエラー時のロールバックが楽だったりするという利点がある。抽象化されて書かれているけどつまりDockerコンテナが本番環境で動いているとデプロイや運用が楽だよねって話。

そして宣言的設定により状態を定義することでイミュータブルなインフラを構築できる。Dockerfileでコンテナの状態を定義したら本番環境のコンテナの状態も明確に分かるようになって嬉しいよねって話。

自己回復するシステムはそのままの意味で、例えばクラスタ中に必ず3つのレプリカが起動している状態でなければならないと設定した場合には1つを手動で立てて4つにした時に自動で1つ削除されて3つの安定した状態に戻ること。

k8sはマイクロサービスの構築を容易にする仕組みをたくさん持っている。k8sは分離アーキテクチャを重視しており、これはサーバーをAPIで分離すること。複数のAPIでアプリケーションを構築するとチームも小さく保つことができて組織においてもスケールしやすくなる。k8sを使うとアプリケーションとSREの関心を分離することができる。

3章 Kubernetes クラスタのデプロイ

チュートリアル形式だと思っていたけど全然違った。初めての人間はチュートリアル形式にしないと何も分からないのでは?知ってる人間が知ってる人間に説明している様相になっている。

正直分かりにくいので何か別のリソースを参照する必要がある。

5章 Pod

Podはコンテナとストレージの集まりのことで、k8sクラスタではコンテナではなくPodが最小のデプロイ単位。

この章は実際にWordPressk8sクラスタ上に構築するチュートリアルとかやれば難なく理解できそう。

8章 ReplicaSet

この章もチュートリアルで手を動かしながらやったほうがよさそうだけど重要そうだったのでメモ。

ReplicaSetはPodの冗長性を確保できるもので、複数の同じPodを管理することができる。

12章 Deployment

DeploymentはReplicaSetを管理する。Deploymentによってローリングアップデートの設定ができる。