「しくみがわかるkubernetes」を読んだ

Kubernetesとはそもそも何者なのか、何のためにどういう設計思想で作られたのか、どうやって使えばいいのか、どういうしくみになっているのか、などなどについて書かれた本です。一言でいうと非常によい本でした。Kubernetesに関する良い本はたくさんありますが、私が読んだ中で下記対象読者(本文より引用)にとってこの本が最適だと思います。

Kubernetesをはじめて使う業務アプリケーション開発者 Dockerの基礎知識がある方

とにかく上記の対象読者の気持ちに寄り添って、Kubernetesの「最低限ここだけは理解しないと話にならない」という部分にだけ的を絞って最短経路で理解してもらいたい、という気持ちがにじみ出ていました*1。他のKubernetes本を見たものの難しすぎて挫折したというかたでも、この本を読んだ上でもとの本に戻ると驚くほど理解しやすくなると思います。Kubernetesを直近で使うことは無くても流行っているからちょっと調べておきたい、というかたにもよいと思います。

本書はKubernetesおよびそれを構成する個々のコンポーネントを説明するにあたって、単に機能説明をするだけにとどまらず、なぜそれが必要なのか、どういう場面でどうやって使うのか、どういうしくみになっているのか、が必ず書かれているため、非常に読みやすい、かつ、腑に落ちやすい作りになっています。初心者が抱きがちな疑問についてもちょうどいいタイミングで回答されていたりと、至れり尽くせりです。

しくみの部分については初心者用の書籍であることやページ数の都合もあり、書いてあることはあくまで概略なのですが、今後他の文書やソースコードを読むときに強い味方になってくれるでしょう*2Kubernetesの複雑なしくみをよくぞここまで簡略化して説明できるものだと、思わず唸ってしまいました。

Kubernetesを使う上で必要な、重要な設計上の判断が必要になったときの対処方法についても本書は書いてくれています。たとえば本書においては物理的なクラスタ構成をどうするか、どのように計算リソース(CPUやメモリなど)を制御するか、などについて触れられています。これらについても決して「こうでなくてはならない」と筆者の意見を押し付けることなく、判断するための基準、および複数の選択肢を提示したうえで「自分ならこうする」という書き方をしています。こういう書き方を「はっきり書いてよ」と嫌うかたもいるとは思いますが、私はこれがよいと思います。なぜかというと、個々人によって置かれた状況は違うので、安易にその状況を知らない人(この場合は著者)がこうすべき、などと言ってもしょうがないからです。

副題に「Azureで動かしながら学ぶ」と書いてある通り、本書は演習においてMicrosoftのAzure、とくにKubernetesクラスタを容易に作成、管理できるマネージドサービス、Azure Kubernetes Engine(AKS)を使っています。この手の書籍は特定の製品に依存しないほうが好ましいのですが、本書についてはこれでよいと思います。というのもKubernetesは巨大なせいもあってフルスクラッチクラスタを作るのは死ぬほどめんどくさくて*3苦行だからです。初心者にそこからやらせるとそれだけで嫌になってしまうことうけあいです。それよりはクラスタ構築の詳細については全く触れないと割り切ってマネージドサービスを使うほうがよいでしょう。クラスタを構築した後の演習内容はおおよそAKSに依存していない内容なので、Azureが気に入らなければGCPAWSなどの他の業者のサービスを使うなり、自前でクラスタを用意するなりすればいいと思います。

Azureを使っていることについてもう一点。著者のおふたりはAzureを提供しているMicrosoft社所属です。このような場合、わたしは「もしや"Azure売らんかな"の精神で書かれたAzure礼賛本ではなかろうか」と身構えてしまうのですが、本書はまったくそんなことはなく、安心して読めました。前節において述べたように一旦クラスタを用意してしまえば後はAzure依存部分はほとんど無いですし、かつ、Azureのサービスについても、あくまで複数ある選択肢の一つとして提示されているに留まっていました。よくある技術書の名を借りた営業パンフレットのような本にありがちな臭みは感じませんでした。

最後に余談。本書は「kubernetesについての入門書を私が書くとしたらこうなる」というつくりになっていたので非常に驚きました。私は普段から何かを学ぶときには関連書籍や記事をたくさん読み込んで咀嚼した上で自分なりの教科書にまとめてアウトプットするのですが、今回はこの本にだいたいそのアウトプットに近いものがまとまっているので、書く手間が省けたと思いました。

*1:テクニカルライターとしては、「ここは書きたかったけども断腸の思いで削ったのだろうなあ」というのが透けて見えて面白かったです

*2:Kubernetesは変化が速いのであまり詳細に書いてもしょうがないという面もあると思います

*3:少なくとも私にとっては