入門Kubernetes
読み終えた
1章 Kubernetes入門
k8s についての基本的な解説
「クゥヴァネテス」
インフラが抽象化されてアプリケーションに集中できる
2章 コンテナの作成と起動
Dockerfile を用いてコンテナイメージを作成する
Docker の操作が中心の話
3章 Kubernetes クラスタのデプロイ
パブリッククラウド使うと Minikube を使う
minikube はローカルで k8s を動かされる
最近は Docker for Mac に k8s が搭載されたからそっち使うとよさそう
使ってみたけど minikube と同じように使えるから僕はこれでいいや
そもそもローカルだとできないことも多いらしいので、素直にクラウド上に作った方が楽っぽい
k8s クライアント -> kubectl
Pod, ReplicaSet, Service などを管理する
基本的にこのコマンドで操作する
クラスタのコンポーネントも k8s を使ってデプロイされる
k8s proxy
Service にネットワークトラッフィクをルーティングする
DaemonSet が活躍する?
k8s DNS
Service の naming & discovery
これ自身も Service として動く
k8s UI
いわゆる dashboard
k8s deployment として管理される
4章 よく使う kubectl コマンド
kubectl で使う基本的なコマンドの説明
fmfm といった感じ
5章 Pod
複数のコンテナを1つの Atomic な単位である Pod にまとめる
pod は鯨の群のことらしいです
k8s 上で最小の単位が Pod
コンテナ群が抽象化されている
cgroups 上で動作し、Linux Namespace の多くをを共有する
Pod を作る基準
WordPress with MySQL と容易にまとめてしまうのはアンチパターン
「このコンテナはそれぞれ違うマシンに配置さても正常に動作しますか?」
Yes -> Pod を分けるのが正解である可能性が高い
No -> Pod にしましょう
あまり理解できなかった、結局今回の例は1つの Pod になった
Pod を複数動かす場合は ReplicaSet を使うことを考える
1つの場合でも ReplicaSet を使った方がいいらしい
Pod は yaml, json で記述できる
ヘルスチェック
プロセスヘルスチェック機能によって、アプリケーションが常のい動いた状態に自動的に維持される
Liveness probe
liveness = 起動しているかどうか
コンテナごとにヘルスチェックする
例では HTTP GET リクエストが正常に動作するかを確認している
Readiness probe
readiness = 応答できるかどうか
コンテナがユーザからのリクエストを処理できているかを確認する
TCP ソケットを使ったヘルスチェックもできる
tcpSocket
exec 監視もできる
コンテナ内でスクリプトを実行できる
リソース管理
resource request = 必要最低限のリソース
resource limit = リソース使用量の制限
データの永続化
Pod or コンテナが削除されると、コンテナのあらゆるデータも削除される
Volume を追加することで、データを永続化できる
Volume を使った推奨パターン
コミュニケーション、同期
emptyDir を使って 2台のコンテナで共有する
キャッシュ
サムネイルのキャッシュなどに
永続化データ
ノード間でデータを共有
クラウドプロバイダ、リモートネットワークストレージをサポート
ホストのファイルシステムをマウント
hostPath を使うことでワーカノードの任意の場所をコンテナにマウントできる
リモートディスクを使ったマウントの紹介
Pod は共生関係にあって一緒に動作する1つ以上のコンテナから構成される
コアな部分だから重要だと思うけど、けっこうふわっとしている
実際に作って見た方がよさそう
6章 Label と Annotation
Lable
オブジェクトのメタデータを特定するためのもの
オブジェクトをグループ化、一覧表示、操作するための基本機能
Label は SRE team の経験から作成されたありがい機能
kubectl で操作する
7章 サービスディスカバリ
DNS がよく知られているサービスディスカバリ
8章 ReplicaSet
9章 DaemonSet
agent, daemon を動かすために使う
ReplicaSet に似ている
ReplicaSet はノードからアプリケーションを分離、どのノードでも複数のコピーを動かせる時に使う
DaemonSet はクラスタ内の全て、あるいは一部のノードで、アプリケーションのコピーが1つだけ動くようにする
10章 Job
11章 ConfigMapと Secret\
12章 Deployment
pod, replicaset をまとめる
13章 ストレージソリューションとKubernetesの統合
14章 実用的なアプリケーションのデプロイ
付録A Raspberry.Piを使った Kubernetesクラスタ構築