みんなのdocker/kubernetesを読みました
- 作者: 石澤基,五十嵐綾,大塚元央,須田一輝,稲津和磨,九岡佑介,坂部広大,青山真也,池添明宏,上岡真也
- 出版社/メーカー: 技術評論社
- 発売日: 2019/04/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
良い本です。
docker、kubernetesをある程度利用していて、自分の知らないことも多かったので、備忘録として。
細かいところは本を実際に見た方が良いと思います。ページ数も少なくてさらっと読め、かつ効果的です。 ある程度利用しているユーザ向けなので、Kubernetes完全ガイドを読んでからの方がすんなり入ってくると思います。
最高のコンテナイメージをビルドする
コンテナの良いところはVMよりもオーバーヘッドを小さくし、「早く」「小さく」環境へ移動する事ができる点
そのためには、コンテナイメージを出来るだけ小さくする・キャッシュを活用するべき
- イメージを圧縮してビルドしたい場合は
docker-slim
コマンド - コンテナイメージの解析をしたい場合は
dive
コマンド - entrypoint.shなどで起動する場合、ゾンビプロセスになるのを防ぐためには
--init
オプション
また、コンテナのUFSの特徴なども把握しておく必要がある
kubernetesによる宣言的なシステム管理
kubectl apply -f
の挙動と、Strategic Marge Patchの挙動に関して
何も考えずapplyしてしまうとリストの記載が消失してしまう事があるため、kubectl diff
での事前確認が大切
Kustomize良さそう
本番運用に向けたPod機能の利用
いざ本番環境で利用した際に起こる問題に対処する方法が記載されている
- resourcesのQoSクラスを意識しないと、意図しないPodのTerminateが走ってしまう
- Terminateの挙動を意識する。gracefulを意識して設定しないと、HTTPリクエストが消失してしまう
- NodeのUpdateのEvictでPodの数が不足してしまわないように、
PodDisruptionBudget
を設定すべき
Kubernetesでの開発を高速化するツール
- kube-ps1/kubectx/kubens/compilation/sternはzshかbashのprofileに設定しておく
- KustomizeはHelmを使うほどではないが、GitOpsなどでYamlを管理するには便利すぎる
活用事例の所感
- Kubernetesでは難しいStatefulな部分は外部SaaSを積極的に活用する
- マルチクラウド・ハイブリッドクラウドの前に、まず一つのベンダにロックインしても使いこなす事が大切
- オンプレは大変。アプライアンスを使わずに自前でツールを作っている例(サイボウズ)もあったが、Kubernetesの中身まで知り使いこなすためにはそれ相応の覚悟と労力が必要
学ぶべき事
- Istio
- knative
- Helm/Kustomize
特にIstio(Envoy) + gRPCの仕組みはこれからどんどん主流になっていくと思うので、ここは抑えとかないといけないなぁ
CloudNativeDaysでも言ってたが、コンテナもk8sもクラウドも、自動化を進めていくためのツールの一つで、ツールを入れる事が目的であってはいけないですね