みんなのdocker/kubernetesを読みました

みんなのDocker/Kubernetes

みんなの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/sternzshbashのprofileに設定しておく
  • KustomizeはHelmを使うほどではないが、GitOpsなどでYamlを管理するには便利すぎる

活用事例の所感

  • Kubernetesでは難しいStatefulな部分は外部SaaSを積極的に活用する
  • マルチクラウド・ハイブリッドクラウドの前に、まず一つのベンダにロックインしても使いこなす事が大切
  • オンプレは大変。アプライアンスを使わずに自前でツールを作っている例(サイボウズ)もあったが、Kubernetesの中身まで知り使いこなすためにはそれ相応の覚悟と労力が必要

学ぶべき事

  • Istio
  • knative
  • Helm/Kustomize

特にIstio(Envoy) + gRPCの仕組みはこれからどんどん主流になっていくと思うので、ここは抑えとかないといけないなぁ

CloudNativeDaysでも言ってたが、コンテナもk8sクラウドも、自動化を進めていくためのツールの一つで、ツールを入れる事が目的であってはいけないですね