レバテックフリーランスのサイトに当サイトが紹介されました!

【2023年】Docker/Kubernetes本「人気20冊と新書/高評価/おすすめの9冊」

こちらでは、Webサービス開発では今や必須ともいえるコンテナ型仮想化による効率的な開発が可能となる「Docker」「Kubernetes」の人気・おすすめの参考書を紹介していきまっす。

 

発売したて・発売予定の新書をピックアップ
技術書は情報の鮮度も重要、人気ランキングの前に新しい書籍もチェックしておきましょう。




 

 

Kindle Unlimited 1ヶ月無料

kindle_unlimited_sale
 
  • 1ヶ月無料で読み放題
  • 1ヶ月以内でも解約可能
  • 解約後も1ヶ月まで利用可


 

Docker/Kubernetesの本「人気ランキング 20冊」

Dockerの今売れ筋本を人気ランキングで一覧したのが以下。

ランキングは日々更新されていますので、最新の人気が反映されています。

 

(2024/12/03 12:03 更新)
Rank製品価格
1
2,420円
2,178円
2,420円
2
Kubernetesマイクロサービス開発の実践 impress top gearシリーズ
発売日 2023/12/19
早川博 (インプレス)
総合評価
(5)
3,960円
(+119pt)
1,980円
1,980円
3
Docker実践ガイド 第3版 (impress top gear)
発売日 2023/02/21
古賀政純 (インプレス)
総合評価
(4.1)
4,180円
(+126pt)
2,090円
2,090円
4
仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん
発売日 2021/02/01
小笠原種高 (マイナビ出版)
総合評価
(4.4)
2,992円
2,693円
2,992円
2,992円
5
2,860円
1,430円
1,430円
2,860円
6
Kubernetes完全ガイド 第2版 (Top Gear)
発売日 2020/08/07
青山 真也 (インプレス)
総合評価
(4.5)
4,400円
(+132pt)
3,960円
4,400円
4,400円
7
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築...
発売日 2020/06/11
大澤 文孝, 浅居 尚 (日経BP)
Kindle Unlimited対象
総合評価
(4.3)
2,970円
2,673円
2,970円
2,970円
8
Docker/Kubernetes実践コンテナ開発入門 改訂新版
発売日 2024/02/24
山田 明憲 (技術評論社)
3,960円
(+119pt)
3,960円
9
GCPの教科書II 【コンテナ開発編】
発売日 2020/05/26
クラウドエース株式会社, 飯島宏太, 高木亮太郎, 妹尾登茂木 (リックテレコム)
総合評価
(4)
3,080円
2,860円
2,860円
3,080円
10
プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化...
発売日 2018/04/11
WINGSプロジェクト阿佐 志保 (翔泳社)
総合評価
(3.7)
3,300円
(+150pt)
1,650円
3,300円
3,300円
11
3,300円
1,650円
1,650円
12
Kubernetes CI/CDパイプラインの実装 impress top gearシリーズ
発売日 2021/10/19
北山 晋吾 (インプレス)
Kindle Unlimited対象
総合評価
(4.2)
3,960円
(+119pt)
1,980円
1,980円
3,960円
13
Kubernetesの知識地図 —— 現場での基礎から本番運用まで
発売日 2023/06/24
青山 真也, 小竹 智士, 長谷川 誠, 川部 勝也 (技術評論社)
総合評価
(4.1)
2,970円
2,911円
2,970円
14
イラストでわかるDockerとKubernetes Software Design plus
発売日 2020/12/05
徳永 航平 (技術評論社)
総合評価
(4.1)
2,508円
2,508円
2,508円
2,508円
15
Docker実践ガイド 第2版 impress top gearシリーズ
発売日 2019/02/18
古賀 政純 (インプレス)
総合評価
(4.3)
407円
3,762円
4,180円
4,180円
16
15Stepで習得 Dockerから入るKubernetes コンテナ開発からK8s本番運用まで (StepUp!選書)...
発売日 2019/09/27
高良 真穂 (リックテレコム)
総合評価
(4.1)
4,180円
(+126pt)
3,762円
3,762円
4,180円
17
現場で使えるkubernetes
発売日 2022/09/21
牧田剣吾, 松浦崇仁 (シーアンドアール研究所)
総合評価
(4)
4,202円
(+127pt)
3,782円
3,782円
18
Kubernetes実践ガイド クラウドネイティブアプリケーションを支える技術 (impress top gear)...
発売日 2019/07/12
北山 晋吾, 早川 博 (インプレス)
総合評価
(4.1)
3,850円
(+116pt)
1,925円
1,925円
3,850円
19
たった1日で基本が身に付く! Docker/Kubernetes超入門
発売日 2020/07/11
伊藤 裕一 (技術評論社)
総合評価
(4.1)
2,680円
2,781円
2,838円
2,838円
20
RancherによるKubernetes活用完全ガイド ThinkIT Books
発売日 2019/07/23
市川豊, 藤原涼馬, 西脇雄基 (インプレス)
Kindle Unlimited対象
総合評価
(3.6)
5,060円
(+152pt)
4,554円
5,060円
5,060円

 

以降でおすすめ・注目の本をピックアップしていきまっす。

ちなみに、Kindle版のある本ならサンプル送信で試し読み可能。大概目次まで見れるので、内容の概要もつかめるので、サンプル試読おすすめです。

 

Docker/Kubernetes 高評価・人気のおすすめの5冊

「Kubernetes完全ガイド 第2版 (Top Gear)」

Kubernetes完全ガイド 第2版 (Top Gear)
(著)青山 真也
発売日 2020/08/07
総合評価
(4.5)
(2024/12/03 12:03時点)
Kubernetes解説書の決定版がついに改訂!
Kubernetesはコンテナ化されたアプリケーションのデプロイ、スケーリングなどの管理を自動化する「コンテナオーケストレーションエンジン」です。「クラウドネイティブ」を実現するためのコア技術として、現在多くのシステムでの利用が進んでいます。
本書では、アプリケーション開発者やインフラエンジニアを対象に、Kubernetesの機能やそのエコシステムについて網羅的に解説します。好評をいただいた前版を全面的に見直し、バージョン1.18に対応しました(アルファ機能を含む)。前版以降に追加された機能や変更点にも言及し、最新のKubernetesを活用するための多くの知見を提供します。
これまでKubernetesを触ったことがない方でもそのコンセプトを理解し、実際にアプリケーションをコンテナ化して実行できるようになることを目標としています。また、Kubernetesの認定資格であるCKA(Certified Kubernetes Administrator)およびCKAD(Certified Kubernetes Application Developer)取得のための副読本として、学習に役立つ様々な知識を得ることも可能です
新版は、285枚の図、312個のサンプルマニフェスト、257個のよくある質問とその回答により、より分かりやすいものとなっています。Kubernetesを使ったプロダクションレベルでの活用を目指す人のための、価値ある一冊です。

↓全て表示↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
目次
Dockerの復習と「Hello,Kubernetes」
なぜKubernetesが必要なのか?
Kubernetes環境の選択肢
APIリソースとkubectl
Workloads APIsカテゴリ
Service APIsカテゴリ
Config & Storage APIsカテゴリ
Cluster APIsカテゴリとMetadata APIsカテゴリ
リソース管理とオートスケーリング
ヘルスチェックとコンテナのライフサイクル
メンテナンスとノードの停止
高度で柔軟なスケジューリング
セキュリティ
マニフェストの汎用化を行うオープンソースソフトウェア
モニタリング
コンテナログの集約
Kubernetes環境でのCI
CD
マイクロサービスアーキテクチャとサービスメッシュ
Kubernetesのアーキテクチャを知る
Kubernetesとこれから

↓全て表示↑少なく表示
Users Voice
体系的に分かりやすく書かれていて良書です。k8s公式などをドッグフィーディングして得た知識を補間できました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
完全ガイドとしか言いようのない充実の内容とボリューム。第一版から二年が経過し、その間のKubernetesバージョンアップや周辺エコシステムの進化を取り込んだ形で大幅加筆されています。α版機能についても言及があるため、v1.18以降の数バージョンまでカバー。
そのまま読んでもよいですが、GitHub上で公開されたサンプルコードを利用して、作りながら理解することもできます。ぱっとわかるような一枚絵ではありませんが、セッションごとに詳細な図があります。また、巻末付録の「よくある質問とその答え」は理解度を図るのにとても役立ちます。
実際に手を動かしながら理解していくのに最適ですが、その分時間もかかるので、概要だけ掴みたい人や斜め読みにはむきません。 (参考:楽天)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
著者略歴
青山真也(アオヤママサヤ)
株式会社サイバーエージェントAI事業本部2016年入社。OpenStackを使ったプライベートクラウドやGKE互換なコンテナプラットフォームをゼロから構築。CyberAgentではKubernetes/CloudNative領域のDeveloper Expertsとしても従事。国内カンファレンスでのKeynoteや海外カンファレンス等、登壇経験多数。世界で2番目にKubernetesの認定資格を取得。現在はOSSへのContribute活動をはじめ、Cloud Native Days TokyoのCo-chair、CNCF公式のCloud Native Meetup TokyoやKubernetes Meetup TokyoのOrganizerなどコミュニティ活動にも従事(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  

「仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん」

イラストで、1歩目から少しずつ。これならDockerがわかる!

本書は、若手エンジニアや、バックエンドの技術にあまり詳しくない人に向けて書かれたDockerの入門書です。イラストやハンズオンを多めに入れて、Linuxの知識や、サーバの構築経験がなくても、理解しやすいように努めています。

本書はDockerをまったく知らない初心者から読める内容ですが、「とりあえずコマンドが打てるようになる」ことを目的にした本ではありません。Dockerがそもそもどんな仕組みで動いているのか、コマンドでは何を命令しているのか、オプションや引数は何を意味しているのかをきちんと理解できるように、イラストを多用して説明しています。

Dockerをひととおり動かして、止めて、廃棄するまでの流れを身に付けた上で、複数のコンテナ同士で通信をしたり、データをコンテナの外部に保存したりといった、現場で必要となるスキルを学んでいきます。

また、サーバーエンジニアであれば知っておきたいDocker ComposeやKubernetesについても、初歩から説明をし、ひととおり動かすまでの流れをハンズオンを交えて解説しています。

Dockerと長く付き合っていくための基礎力を身に付け、さらに現場の状況に応じて応用的な使い方もしていきたい方に、ぴったりの1冊です。

・対応OS: Windows 10 Pro/Home(WSL2適用)、macOS X、Linux
・Docker Desktop 3対応

・基本的な解説はDocker Desktop for Windowsで行いますが、Appendixにて他の環境へのインストールについても説明を入れています。

・Appendixでは、Macでのインストール、Linuxでのインストール、VirtualBoxのインストール、AWSでの環境準備のほか、nanoエディタの使い方、Docker Desktopコンソール画面の使い方、Dockerのコマンド一覧などを掲載しています。

<章立て><; br> Chapter1 Dockerとは何だろう
Chapter2 Dockerが動く仕組み
Chapter3 Dockerを使ってみよう
Chapter4 Dockerにコンテナを入れて動かしてみよう
Chapter5 Dockerに複数のコンテナを入れて動かしてみよう
Chapter6 応用的なコンテナの使い方を身に付けよう
Chapter7 Docker Composeについて学ぼう
Chapter8 Kubernetesについて学ぼう
Appendix
・[Windows向け]インストール補助情報
・[Mac向け]Desktop版Dockerインストール
・[Linux向け]Dockerのインストール
・VirtualBoxでポートフォワードの設定をする
・[Linux向け]nanoエディタの使い方
・[Linux向け]Kubernetesのインストール
・デスクトップ版コンソール画面の使い方
・Dockerのコマンド


↓全て表示↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
目次
Chapter 1 Dockerとは何だろう
Section 01 Dockerって何だろう
Section 02 サーバとDocker
Chapter 2 Dockerが動く仕組み
Section 01 Dockerが動く仕組み
Section 02 Docker Hubとイメージとコンテナ
Section 03 Dockerコンテナのライフサイクルとデータの保存
Section 04 Dockerのメリットとデメリット
Chapter 3 Dockerを使ってみよう
Section 01 Dockerを使うには
Section 02 Dockerのインストール
Section 03 Dockerの操作方法とコマンドプロンプト/ターミナルの起動
Chapter 4 Dockerにコンテナを入れて動かしてみよう
Section 01 Docker Engineの起動と終了
Section 02 コンテナ操作の基本
Section 04 コンテナと通信
Section 05 コンテナ作成に慣れよう
Section 06 イメージの削除
Chapter 5 Dockerに複数のコンテナを入れて動かしてみよう
Section 01 WordPressの構築と導入の流れ
Section 02 WordPressのコンテナとMySQLコンテナを作成し、動かしてみよう
Section 03 コマンド文を書けるようになろう
Section 04 RedmineのコンテナとMariaDBのコンテナを作成し、練習してみよう
Chapter 6 応用的なコンテナの使い方を身に付けよう
Section 01 自分に必要な技術を整理しよう
Section 02 コンテナとホスト間でファイルをコピーする
Section 03 ボリュームのマウント
Section 04 コンテナのイメージ化
Section 05 コンテナの改造
Section 06 Docker Hubへの登録
Chapter 7 Docker Composeについて学ぼう
Section 01 Docker Composeとは
Section 02 Docker Composeのインストールと使い方
Section 03 Docker Composeファイルの書き方
Section 04 Docker Composeを実行してみる
Chapter 8 Kubernetesについて学ぼう
Section 01 Kubernetesとは
Section 02 マスターノードとワーカーノード
Section 03 Kubernetesの構成と用語
Section 04 Kubernetesのインストールと使い方
Section 05 定義ファイル(マニフェストファイル)の書き方
Section 06 Kubernetesのコマンド
Section 07 Kubernetesの操作を練習しよう
Appendix
Appendix 01 [Windows向け]インストール補助情報
Appendix 02 [Mac向け]Desktop版Dockerインストール
Appendix 03 [Linux向け]Dockerのインストール
Appendix 04 VirtualBoxでポートフォワードの設定をする
Appendix 05 [Linux向け]nanoエディタの使い方
Appendix 06 [Linux向け]Kubernetesのインストール
Appendix 07 デスクトップ版コンソール画面の使い方
Appendix 08 Dockerのコマンド

↓全て表示↑少なく表示
Users Voice
[きほんのきほん]と書かれたタイトルに偽りなし。技術的な関連情報をあまり分かってない人にも優しい本。図解もよい。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
梱包なども丁寧にされており、中身も満足できるものでした。スムーズなご発送を、ありがとうございました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
Dockerの入門書としてお勧めの本。
一通りの操作と概念が手を動かしながら学べます。
挿絵については賛否があるようですが、自分としては特に気にならなく、Dockerの仕組みからHub、コンテナ間の通信、記憶領域のマウント/バインドと理解できました。
Docker fileとCompose fileの部分は、実際に作りたい環境があり(SeleniumとPythonコンテナをたてて、スクリプトをホスト側から適宜修整できるようにする)、ネットで情報を補完して作りました。ここは自分で作りたい環境を決めて、実際に作った方がいいです。
本書でDockerの概観を捉える事はでき、Dockerってなんなの?という学習前のモヤモヤは晴れました。
*疑問点があれば自分で調べて理解できるレベルになった (参考:honto)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
著者略歴

著:小笠原 種高
愛称はニャゴロー陛下。テクニカルライター、イラストレーター。
システム開発のかたわら、雑誌や書籍などで、データベースやサーバ、マネジメントについて執筆。図を多く用いた易しい解説に定評がある。綿入れ半纏愛好家。
最近気になる動物は黒豹とホウボウ。

[Twitter]@shigetaka256
[Website]モウフカブール http://www.mofukabur.com

主な著書・Web記事
『図解即戦力AWSのしくみと技術がこれ1冊でわかる教科書』(技術評論社)
『Automation Anywhere A2019シリーズではじめるRPA超入門』(日経BP)
『なぜ?がわかるデータベース』(翔泳社)
『256(ニャゴロー)将軍と学ぶWebサーバ 』『MariaDBガイドブック』(工学社)
『ミニプロジェクトこそ管理せよ!』(日経 xTECH Active他)
『RPAツールで業務改善! UiPath入門 基本編・アプリ操作編』(秀和システム)
他多数。


↓全て表示↑少なく表示

  

「Kubernetesで実践するクラウドネイティブDevOps」

Kubernetesで実践するクラウドネイティブDevOps
(著)John Arundel, Justin Domingus
発売日 2020/02/19
総合評価
(4.4)
(2024/12/03 12:03時点)
Kubernetesが標準プラットフォームであるクラウドネイティブの世界でアプリケーションを開発し運用する方法を解説する書籍です。

はじめに、Kubernetesの概要と背景、ソフトウェアの開発と運用にKubernetesがもたらす変化、コンテナの動作原理、コンテナの構築および管理方法、クラウドネイティブなサービスおよびインフラの設計方法などの基礎を紹介します。
そしてKubernetesアプリケーションの作成とデプロイ、Kubernetesクラスタの設定と運用、クラウドインフラの自動化、Helmなどのツールを用いたデプロイについてサンプルコードを用いて学習します。ロールベースのアクセス制御(RBAC)をはじめとした、セキュリティ、認証、パーミッションなどに対するKubernetesのサポートや、本番でコンテナとKubernetesの安全性を確保するためのベストプラクティスについても学びます。
さらにKubernetesで継続的インテグレーションと継続的デプロイをセットアップする方法、データをバックアップおよび復元する方法、クラスタの適合性や信頼性をテストする方法、監視・トレーシング・ロギング・メトリクスを集約する方法、Kubernetesインフラの拡張性・耐障害性・費用対効果を高める方法を解説します。
Kubernetesの基本から、継続的デプロイ、機密情報管理、オブザーバビリティなどの高度なトピックを扱う本書は、サーバ、アプリケーション、サービスを管理するIT運用者、クラウドネイティブサービスの構築や移行を行う開発者必携の一冊です。

↓全て表示↑少なく表示
 
目次
クラウドでの革命
Kubernetes最初の一歩
Kubernetes環境の選択
Kubernetesオブジェクトの基本操作
リソースの管理
クラスタの運用
Kubernetesの強力なツール
コンテナの実行
Podの管理
設定と機密情報
セキュリティとバックアップ
Kubernetesアプリケーションのデプロイ
開発ワークフロー
Kubernetesにおける継続的デプロイ
オブザービリティと監視
Kubernetesにおけるメトリクス

↓全て表示↑少なく表示
Users Voice
Kubernetesを中心としたテクノロジーを使ってDevOpsを実践するのに必要な知識とツールを解説した本。
Kubernetesとコンテナ技術の前提知識は不要とあるが、さすがにまったく知らないと学習曲線がきつく、読み進めるのは大変だろう。ただコンテナ技術の入門的な知識があれば、Kubernetesの概要から始まってDockerやKubernetesについて初歩からひととおり解説してくれるので、これから本格的に使ってみようという読者(私もその一人)には重宝するはず。
開発からテスト、運用、監視、セキュリティなど、CI/CDのパイプライン全体を俯瞰できるので、本書を一冊読めば、Kubernetesまわりの技術の全体像をある程度つかむことができる。Kubernetesのエコシステムは膨大で変化も速いので、どんなツールがあってどれが普及しているのかを知るだけでも大変だが、この本を読めば効率よくそれを知ることができる。
翻訳もこなれていて読みやすい。 (参考:honto)

↓全て表示 ↑少なく表示
単純な Kubernetes の話だけではなく、運用や DevOps の適用などにも踏み込まれており、すごく参考になる本だと思いました。 (参考:honto)

↓全て表示 ↑少なく表示
1章 クラウドでの革命
■クラウドネイティブとは
・自動化可能
・ユビキタスかつ柔軟
・弾力的かつスケーラブル
・動的
・オブザーバル(観測可能)
・分散化

■まとめ
・クラウドコンピューティングによって、独自に保有するハードウェアを管理するための支出とオーバーヘッドから解放され、耐障害性、柔軟性、拡張性に優れた分散システムを構築できます。
・DevOpsの第一歩は、最先端のソフトウェア開発はコードをリリースしたら終わりではないと認識することです。それは、コードを書く者とそれを使用する者との間のフィードバックループを短くします。
・さらにDevOpsはインフラと運用の世界に、コード中心のアプローチとソフトウェア工学の優れたプラクティスをもたらします。
・コンテナを使用すると、標準化された小さな自己完結型の単位でソフトウェアをデプロイおよび実行できます。これにより、コンテナ化されたマイクロサービスを接続することで、大規模かつ多様な分散システムを構築する難易度とコストが低下します。
・オーケストレーションシステムは、コンテナのデプロイ、スケジューリング、スケーリング、ネットワーキングなど、優れたシステム管理者が行うであろう作業をすべて、自動化されたプログラム可能な方法で管理します。
・Kubernetesは事実上の標準となっているコンテナオーケストレーションシステムで、すぐにも本番で活用できる環境が現在すでに整っています。
・クラウドネイティブとは、協調して動作するマイクロサービスで構成され、自動化されたInfrastructureasCode(コードとしてのインフラストラクチャ)によって動的に管理される、クラウドベースのコンテナ化された分散システムを簡潔に表現するのに役立つ用語です。
・運用とインフラのスキルは、クラウドネイティブ革命によっても決して陳腐化するわけではなく、現にかつてないほど重要であり、今後もさらに重要性が高まります。
・中央チームは、他のすべてのチームがDevOpsを実現できるように支援するプラットフォームとツールを構築および保守するために、依然として存在意義があります。
・ソフトウェアエンジニアと運用エンジニアの明確な区別は今後なくなるでしょう。今ではソフトウェアがすべてであり、誰もがエンジニアです。

2章 Kubernetes最初の一歩
■まとめ
2.7まとめ
・すべてのソースコード例(および他の多くの資料)は、本書に付随して用意されているデモリポジトリ(https://github.com/cloudnativedevops/demo)から入手できます。
・Dockerを使用すると、コンテナをローカルにビルドしたり、DockerHubなどのコンテナレジストリにブッシュ(アップロード)したり、そこからプル(ダウンロードしたり、コンテナイメージを各自のマシンでローカルに実行したりできます。
・コンテナイメージの内容はDockerfileで完全に指定されます。これはコンテナのビルド方法に関する命令が記述されるテキストファイルです。
・DockerDesktopを使用すると、小規模な(単一ノードの)Kubernetesクラスタを各自のマシン上で実行できます。小規模とはいえ、ここでは任意のコンテナ化されたアプリケーションを実行できます。別の選択肢としてはMinikubeがあります。
・kubectlツールは、Kubernetesクラスタを対話操作する基本的な方法です。これは命令的に使用することも(例えば、公開されているコンテナイメージを実行し、必要なKubernetesリソースを暗黙のうちに作成)、宣言的に使用してYAMLマニフェストの形でKubernetes設定を適用することもできます。

3章 Kubernetes環境の選択
■実行するソフトウェアを減らす
「実行するソフトウェアを減らす」という哲学には3本の柱があり、いずれも時間もうまく使って競争相手に打ち勝つために役立ちます。
1.標準のテクノロジを選ぶ
2.差別化につながらない面倒な作業はアウトソーシングする
3.長続きする競争優位性を生み出す

■まとめ
・Kubernetesクラスタは、コントロールプレーンを実行するマスタノードと、ユーザのクロードを実行するワーカノードで構成されます。
・本番クラスタは高可用性を備えていなければなりません。つまり、マスタノードに障害が発生しても、データを失ったりクラスタの運用に影響が及んだりはしないことが求められます。
・単純なデモクラスタは、重要な本番ワークロードに対応する準備が整ったクラスタにはほど遠い状態です。高可用性、セキュリティ、ノード管理は、取り組まなけばならない課題のごく一部にすぎません。
・独自のクラスタを管理するためには、時間、労力、専門知識を大量に投入する必要があります。しかも、それだけやっても依然として正しく機能しない可能性があります。
・GoogleKubernetesEngine(GKE)のようなマネージドサービスは、あらゆる面倒な作業をユーザのために、セルフホスティングよりも大幅に低コストで実行します。
・ターンキー方式のサービスは、Kubernetesのセルフホスティングと完全マネージドとの間で検討する価値のある妥協案になります。Stackpoint.ioのようなターンキーソリューションのプロバイダがユーザのためにマスタノードを管理する一方、ユーザは自分自身のマシンでワーカノードを実行します。
・独自のクラスタをホスティングしなければならない場合には、kopsを推奨します。これは広く使用されている成熟したツールであり、AWSやGoogleCloudで本番グレードのクラスタをプロビジョニングおよび管理できます。
・可能であればマネージドKubernetesを使用すべきです。これはコスト、オーバヘッド、品質の点で、大部分のビジネスにとって最善の選択肢です。
・マネージドサービスが選択肢とならない場合は、優れた妥協案としてターンキー方式サービスの使用を検討します。
・ビジネス上の明白な理由なしにKubernetesクラスタをセルフホスティングしてはなりません。どうしてもセルフホスティングに踏み切る場合は、初期セットアップと継続的な保守のオーバヘッドに伴うエンジニアリング時間を過小評価しないことです。

4章 Kubernetesオブジェクトの基本操作
■まとめ
・PodはKubernetesリソースの一種で、Kubernetesにおける仕事の最小単位であり単一のコンテナ、または組み合わせて同じノードにスケジューリングされ相互に通信するコンテナのグループを指定します。
・Deploymentは高水準のKubernetesリソースであり、Podを宣言的に管理し、必要に応じてPodをデプロイ、スケジューリング、更新、再起動します。
・ServiceはKubernetesリソースの一種で、ロードバランサやプロキシに相当する機能を提供し、単一かつ周知の永続的なIPアドレスまたはDNS名を通じて、条件に一致するPodのグループにトラフィックをルーティングします。
・Kubernetesスケジューラは、どのノードでもまだ実行されていないPodを監視し、それに適したノードを見つけて、Podの実行をノードのkubeletに指示します。
・Deploymentなどのリソースは、Kubernetesの内部データベースが保持するレコードによって表現されます。こうしたリソースは外部からは、YAML形式の(マニフェストと呼ばれる)テキストファイルで表現できます。リソースの望ましい状態を宣言するのがマニフェストです。
・kubectlはKubernetesを操作するための主要なツールで、マニフェストの適用、リソース情報の取得、変更の実施、リソースの削除、その他さまざまなタスクを実行できます。
・HelmはKubernetes用のパッケージマネージャです。Kubernetesアプリケーションの設定とデプロイを簡素化し、生のYAMLファイルをユーザ自身が保守しなくても、値の単一のセット(アプリケーション名や待ち受けるポートなど)やテンプレートのセットを用いてKubernetes用のYAMLファイルを生成できるようにします。

5章 リソースの管理
■まとめ
・KubernetesはCPUとメモリのリソースを、要求と制限に基づいてコンテナに割り当てます。
・コンテナの要求は、実行に必要となるリソースの最小量です。また制限は、リソースの使用が許される最大量を指定します。
・最小限のコンテナイメージは、ビルド、ブッシュ、デプロイ、起動が高速になります。コンテナが小さいほど、セキュリティ上の潜在的な脆弱性も少なくなります。
・Liveness probeは、コンテナが適切に機能しているかどうかをKubernetesに報告します。Liveness probeが失敗を返す場合、コンテナは終了および再起動されます。
・Readiness probeは、コンテナの準備が整ってリクエストに対応できることをKubernetesに報告します。Readiness probeが失敗を返す場合、コンテナは自分を参照している任意のServiceから取り除かれ、ユーザのトラフィックから切断されます。
・PodDisruptionBudgetsを使用すると、退去(eviction)処理の間に一度に停止できるPodの数を制限して、アプリケーションの高可用性を保持できます。
・Namespaceはクラスタを論理的にパーティション化する方法で、アプリケーション別や関連するアプリケーションのグループ別に作成できます。
・別のNamespaceにあるServiceを参照するには、DNSアドレスを使用できます(例:SERVICE.NAMESPACE)。
・ResourceQuotaを使用すると、与えられたNamespaceの総合的なリソース制限を設定できます。
・LimitRangeは、Namespace内のコンテナに適用されるデフォルトのリソース要求とリソース制限を指定します。
・リソース制限は、アプリケーションの通常の使用状況を少し上回る程度に設定します。
・必要以上に大量のクラウドストレージを割り当てることや、アプリケーションの処理能力にとって重要ではないかぎり、高帯域幅のストレージをプロビジョニングすることは避けます。
・すべてのリソースに所有者Annotationを設定し、クラスタを定期的にスキャンして所有者不明のリソースを特定します。
・使用されていないと思われるリソースを探し出してクリーンアップします(ただし所有者に確認します)。
・使用状況を長期的に計画できる場合には、リザーブドインスタンスを使用するとコストを削減できます。
・プリエンプティブインスタンスは即座にコスト削減効果を期待できますが、急に消滅する可能性に備える必要があります。障害を許容しないPodがプリエンプティブノードにスケジューリングされないようにするには、Node Affinityを使用します。

6章 クラスタの運用
■まとめ
・本番のKubernetesクラスタをプロビジョニングする前に、必要になるノードの数とサイズを検討します。
・少なくとも3つのマスタノード(マネージドサービスを利用する場合には不要)、および少なくとも2つ理想的には3つ)のワーカノードが必要です。この構成のKubernetesクラスタは、小さなワークロードを実行するだけの場合、最初はやや割高に思えるかもしれませんが、耐障害性とスケーリングが当初から組み込まれているメリットを忘れないでください。
・Kubernetesクラスタは、数千個のノードおよび十数万個のコンテナという規模にまで拡張可能です。
・これを超える規模に拡張する必要がある場合は、複数のクラスタを使用します(セキュリティやコンプライアンスの理由から、これが必要になる場合もあるでしょう)。クラスタ間でワークロードを複製する必要がある場合には、フェデレーション機能を使用してクラスタション機能を同期させることができます。
・Kubernetesノードの典型的なインスタンスサイズは、1CPUと4GiBのRAMです。とはいえ、2つや3つの異なるノードサイズを混在させるのも優れた方法です。
・Kubernetesはクラウド専用ではなく、ベアメタルサーバでも実行できます。物理マシンが余っているのであれば、Kubernetesで活用しない手はありません。
・クラスタは手作業で規模を拡大縮小しても、それほど大きな問題が生じることはなく、おそらくは頻繁に調整する必要もないでしょう。オートスケールは便利な機能ではありますが、それほど重要ではありません。
・Kubernetesのベンダと製品については、明確に定義された標準があります。つまり、CNCFのCertified Kubemetesマークです。これが表示されていない場合には、その理由を確認しましょう。
・カオステストは、Podをランダムに終了させ、その場合でもアプリケーションが機能するかを確認するプロセスです。 これは役に立ちますが、 クラウドにはいずれにしても、あなたが求めるまでもなく独自のカオステストを行う方法が用意されています。

7章 Kubernetesの強力なツール
■まとめ
・kubectlには、それ自身についても(kubectl -h)、Kubernetesのあらゆるリソース、フィールド、機能についても(kubectl explain)、完全かつ包括的なドキュメンテーショ ンが用意されています。
・kubectlの出力に関して、複雑なフィルタリングや変換を例えばスクリプト内で行いたい場合には、-o jsonでJSON形式を選択します。JSONデータが得られれば、jqのような強力なツールを使用してクエリが可能です。
・kubectlの--dry-runオプションを、YAML出力を得るための-o yamlと組み合わせると、命令的なコマンドを使用してKubernetesマニフェストのポイラプレートを生成できます。これは例えば新規アプリケーション用にマニフェストを作成する際に、時間の大幅な節約になります。
・kubectl getで--exportフラグを使用すると、既存のリソースをYAMLマニフェストに変換することもできます。
・kubectl diffでは、マニフェストを適用した場合に変わるであろう点を、実際には変更せずに確認できます。
・kubectl logsでは、任意のコンテナからの出力とエラーメッセージを表示でき、--followフラグで継続的にストリーミングすることもできます。 また、 Stern を使用すると、より洗練された複数Podログのフォローが可能です。
・コンテナの問題をトラブルシューティングするには、 kubectl attachによりコンテナにアタッチすることや、kubectl exec -it... /bin/shによりコンテナ上でシェルを使用することができます。
・kubectl run を使用すると、公開されている任意のコンテナイメージを実行して問題解決に役立てることができます。例えば、使い慣れたUnixコマンドがすべて含まれている、多機能なBusyBoxツールも利用できます。
・KubernetesのContextはブックマークのようなもので、特定のクラスタやNamespace内の場所をマーキングできます。kubectxおよびkubensツールを使用すれば、Context間やNamespace間で手軽に切り替えることができます。
・Clickは強力なKubernetesシェルで、kubectlのすべての機能を利用できるだけでなく、追加の状態もあります。つまり、コマンドが変わっても現在選択されているオブジェクトを記憶しているため、ユーザはその都度指定する必要がありません。
・Kubernetes はコードによって自動化および制御できるように設計されています。 kubectlが提供するものを超える機能が必要な場合には、Kubernetesのclient-goライブラリを使用すると、クラスタのあらゆる側面をGoコードによって完全に制御できます。

8章 コンテナの実行
■まとめ
・Linuxのコンテナとは、カーネルレベルではプロセスの分離されたセットであり、リソースがリングフェンスで囲い込まれています。コンテナの内部からは、コンテナ自体が1台のLinuxマシンを占有しているかのように見えます。
・コンテナは仮想マシンではありません。個々のコンテナは1つの主要な プロセスを実行する必要があります。
・Podには一般に、主要なアプリケーションを実行する1つのコンテナと、それをサポートするオプションのヘルパコンテナが(複数)含まれます。
・コンテナイメージの識別子には、レジストリホスト名、リポジトリ名前空間、イメージリオジトリ、タグを指定できます(例: docker.io/cloudnatived/demo: hello)。なお、メージリポジトリだけが必須です。
・デプロイの再現性を高めるためには、コンテナイメージの識別子に常にタグを指定します。これを省略すると、何であれたまたまlatestとタグ付けされているものを取得することになります。
・コンテナ内のプログラムをrootユーザとして実行してはなりません。その代わりに通常のユーザを割り当てます。
・コンテナにrunAsNonRoot: true フィールドを設定すると、rootとして実行することを要求するコンテナをブロックできます。
・コンテナのセキュリティ強化に役立つ他の設定としては、readOnlyRootFilesystem: true とallowPrivilegeEscalation: false があります。
・Linuxのケイパビリティは、きめ細かな権限制御機構を提供しますが、コンテナに設定されるデフォルトのケイバビリティは寛容すぎます。コンテナでは最初にすべてのケイバビティを削除してから、必要に応じて特定のケイバビリティを許可するようにします。
・同じPodを構成するコンテナは、マウントされたボリュームを読み書きすることによってデータを共有できます。最も単純なボリュームはemptyDirというタイプで、空の状態から使用が始まり、そのPodが実行されている間だけコンテンツを保持します。
・これに対してPersistentVolumeは、必要とされる限りの間ずっとコンテンツを保持します。PodはPersisitentVolumeClaimを用いて、新規のPersistentVolumeを動的にプロビジョニングすることもできます。

9章 Podの管理
■まとめ
・Labelとはリソースを識別するキーと値のペアであり、セレクタと組み合わせて使用すると、リソースの特定のグループに一致させることができます。
・Node Affinityは、指定された属性を持つノードにPodを引き寄せるか、そうしたノードからPodを遠ざけます。例えば、指定されたアベイラビリティゾーンに属するノードのみでPodを実行できるように設定できます。
・ハードNode AffinityはPodの実行を防ぐことができますが、ソフトNode Affinityは「可能であれば・・・・」とスケジューラに提案する感じになります。複数のソフトAffinityを組み合わせ、異なる重みを与えることができます。
・Pod AffinityはPodについて、他のPodと同じノードにスケジューリングするのが望ましい。という選好性を表現します。例えば、同じノードで実行されることがメリットになるPod同士は、Pod Affinityを用いて、そのことを相互に表現できます。
・Pod Anti-Affinityは、他のPodを引き寄せるのではなく遠ざけます。例えば、同じPodのレプリカに対してAnti-Affinityを設定すると、クラスタ全体にレプリカを均等に配置するのに役立ちます。
・Taintは、一般にノードの問題や障害に関する特定の情報でノードをタグ付けする方法です。デフォルトでは、Taintが設定されたノードにはPodがスケジューリングされません。
・Tolerationを使うと、特定のTaintが設定されたノードにPodをスケジューリングできます。この機構を利用すれば、特定のPodを専用ノード上だけで実行できるようになります。
・DaemonSetを使うと、Podの1つのコピーをすべてのノードにスケジューリングできます(例:ロギングエージェント)。
・StatefulSetはPodのレプリカを番号付きの特定の順序で起動および終了するため、個々のレプリカを予測可能なDNS名でアドレス指定できるようになります。これはデータベースな どのクラスタ化されたアプリケーションに理想的です。
・JobはPodを1回(または指定された回数)だけ実行したのち、完了となります。同様に、CronJobはPodを指定された時間に定期的に実行します。
・Horizontal Pod Autoscaler(HPA)は一連のPodを監視して、所定のメトリクス(例:CPU使用率)が最適化されるように試みます。つまり、指定された目標を達成するため、実行されるレプリカの望ましい数を増減させます。
・PodPresetでは、共通の設定情報をすべての選択されたPodの作成時に注入できます。例えば、PodPresetを用いて、特定のVolumeをすべての一致するPodにマウントすることが可能です。
・Custom Resource Definition(CRD)を使うと、例えば希望する任意のデータを保存するといった目的のために、独自のカスタムKubernetesオブジェクトを作成できます。Operatorは、特定のアプリケーション(例:MySQL)向けにオーケストレーションの機能を実装できるKubernetesクライアントプログラムです。
・Ingress リソースは、一連のルール(例:リクエストのURLの一致する部分)に基づいて、リクエストを異なるサービスにルーティングします。また、アプリケーション向けにTLS接続の終端処理を実行することもできます。
・Istioはマイクロサービスのアプリケーションに高度なネットワーキング機能を提供するツールで、他の Kubernetesアプリケーションと同様にHelmを用いてインストールできます。
・Envoy は標準のクラウド型ロードバランサよりも高度なロードバランシング機能を提供し、サービスメッシュにも対応できます。

10章 設定と機密情報
■まとめ
・設定データはアプリケーションのコードから分離し、KubernetesのConfigMapやSecretを用いてデプロイします。こうすることで、例えばパスワードを変更するたびにアプリケーションを再デプロイする必要がなくなります。
・ConfigMapにデータを取り込むには、Kubernetesのマニフェストファイルに直接記述する方法と、kubectlを用いて既存のYAMLファイルをConfig Mapに変換する方法があ ます。
・データを取り込んだConfigMapは、コンテナに環境変数挿入するか、コンテナのエントリポイントにコマンドライン引数として渡すことができます。また、データをファイルに書き込んでコンテナにマウントする方法もあります。
・Secretの使い方はConfigMapとほぼ同様ですが、保存データの暗号化(encryption at res)が有効な場合はデータが保存時に暗号化され、kubectlの出力では難読化される点が異なります。
・機密情報を管理するためのシンプルで柔軟な方法は、ソースコードのリポジトリ内に直接保存することですが、 SOPSなどテキストベースの暗号化ツールを使って暗号化する必要があります。
・機密情報管理については特に最初のうちは、あまり深刻に考えることはありません。開発者にとって容易にセットアップできるシンプルな方法から始めます。
・機密情報を多くのアプリケーションが共有する状況では、機密情報を(暗号化して)クラウドバケットに保存して、デプロイ時に取り出す方法が効果的です。
・大企業レベルの機密情報管理では、 Vaultなどの専用の機密情報管理ツールが必要になります。しかし、結局そこまでの必要性はなかったと後になって判明する可能性があるため、いきなり専用ツールから始めることは推奨しません。必要に応じて専用ツールに移行することはいつでも可能です。
・SOPSはYAMLやJSONなどキーと値のペアが記述されたファイルと組み合わせて活用できる暗号化ツールです。使用する暗号鍵は、ローカルに実行する GnuPGの鍵束(keyring)からも、Amazon KMSやGoogle Cloud KMSなどクラウドの鍵管理サービスからも取得できます。

11章 セキュリティとバックアップ
■まとめ
・ロールベースのアクセス制御(RBAC)を使用することで、Kubernetesにおけるパーミッションをきめ細かく管理できます。この機能が有効になっていることを必ず確認し、RBACロールを用いて、特定のユーザやアプリケーションには職務やジョブの実行に必要となる最小限の権限だけを許可します。
・コンテナだからといって、セキュリティやマルウェアの問題が魔法のように免除されるわけではありません。本番で実行するコンテナはすべて、スキャンツールを使ってチェックします。
・Kubernetesは安定性や可用性に関して極めて高いレベルにありますが、それでもバックアップは必要です。クラスタのデータと状態をバックアップするにはVeleroを使うとよいでしょう。これはクラスタ間でそれらを移行するのにも便利です。
・kubectlは、クラスタとそのワークロードをあらゆる側面から検査および報告できる強力なツールです。 kubectlは頻繁に使用して多くの時間を費やすことになるので、ぜひ使い方をマスタしましょう。
・クラスタの運用状況をグラフィカルな表示で概観するためには、KubernetesプロバイダのWebコンソールや、kube-ops-viewを使います。Kubernetes Dashboardを使う場合には、クラウド認証情報や暗号鍵の場合と全く同じレベルで厳格にセキュリティを確保する必要があります。

12章 Kubernetesアプリケーションのデプロイ
■まとめ
・チャートとはHelmパッケージの仕様で、パッケージに関するメタデータ、一部の設定値、設定値を参照するKubernetesオブジェクトのテンプレートが含まれます。
・チャートをインストールするとHelmリリースが作成されます。チャートのインスタンスをインストールするたびに新しいリリースが作成されます。異なる設定値でリリースを更新すると、Helmがリリースのリビジョン番号をインクリメントします。
・独自の要件に合わせてHelmチャートをカスタマイズするには、変更したい設定のみを上書きするカスタム値ファイルを作成して、helm installまたはhelm upgradeのコマンドラインに追加指定します。
・変数(例:environment)を使うと、ステージングや本番といったデプロイ環境に応じて、異なる一連の値や機密情報を選択できます。
・Helmfileを使うと、クラスタに適用する必要がある(複数の)Helmチャートや値を宣言的に指定でき、そのすべてを単一のコマンドでインストールまたは更新できます。
・HelmをSOPSと組み合わせて使うことで、チャート内の機密情報に関する設定を処理できます。また、関数を使って、機密情報を自動的に(Kubernetesが想定する形式の)base64でエンコードすることもできます。
・HelmはKubernetesマニフェストの管理に利用できる唯一のツールではありません。ksonnetとKapitanは、JSONとは異なるテンプレート作成言語であるJsonnetを使用しま す。kustomizeはアプローチが異なり、 変数を補完するのではなく、YAMLオーバレイのみを使ってマニフェストを設定します。
・マニフェストをすばやくテストおよび検証する方法はKubevalを使うことで、構文の有効性やマニフェストでありがちなエラーがチェックされます。

13章 開発ワークフロー
■まとめ
・Kubernetesにおけるデフォルトのデプロイ戦略であるRollingUpdateは、一度に少数のPodをアップグレードし、交換されるPodの準備が整うまで待ってから古いPodをシャットダウンします。
・ローリングアップデートは、ロールアウトの時間が長くなるという犠牲を払ってダウンタイムを回避します。また、ロールアウトの実行中は、アプリケーションの新旧バージョンが同時に実行されることにもなります。
・maxSurgeおよびmaxUnavailableフィールドの値を変更すると、ローリングアップデートの動作を微調整できます。なお、使用するKubernetes APIのパージョンによっては、デフォルト値がユーザにとって必ずしも適切であるとは限りません。
・Recreateは古いPodをすべて一斉に終了して、新しいPodをすべて一度に起動します。これはロールアウトが高速ですがダウンタイムが発生するため、ユーザからのリクエストに対応するアプリケーションには不適切です。
・ブルーグリーンデプロイでは、新しいPodがすべて起動されて準備が整っても、ユーザのトラフィックを受信しないまま待機します。その後、すべてのトラフィックを新しいPod群に一度に切り替えてから、古いPod群を引退させます。
・レインボーデプロイはブルーグリンデプロイと似ていますが、3つ以上のバージョンが同時に稼働されます。
・Kubernetesでブルーグリーンデプロイとレインボーデプロイを実装するには、PodのLabelを調整し、フロントエンドServiceのセレクタを変更することで、適切なPod群にトラフィックを振り向けます。
・Helmのフック機能は、特定のKubertetesリソース(一般にJob)の特定の段階で(例えばデータベースの移行を実行するために)適用する手段となります。フックを使えば、デプロイの進行中にリソースが適用される順序を定義することや、何らかの処理が失敗した場合にデプロイを停止させることもできます。

14章 Kubernetesにおける継続的デプロイ
■継続的デプロイとは何か
 継続的デプロイ(continuous deployment、CD)とは、成功したビルドを本番へ自動的にデプロイする仕組みです。テストスイートと同じく、デプロイも一元的かつ自動的に管理する必要があります。つまり開発者にとっては、ボタンを押す、マージリクエストをマージする、Gitリリースタグをプッシュするといった方法で新しいバージョンをデプロイできることが求められます。
 CDと関連付けられることが多い概念として継続的インテグレーション(continuous integration、CI)があります。これはメインライン(mainline)ブランチに対して開発者が行う変更の統合とテストを自動化する仕組みです。その基本的な考え方は、メインラインにマージされるとビルドを壊すであろう変更をブランチに加えている場合には、ブランチがメインラインにマージされるのを待って壊れたことに気付くのではなく、マージされる前に継続的インテグレーションが直ちに開発者に壊れていることを通知するというものです。継続的インテグレーションと継続的デプロイの組み合わせは多くの場合、CI/CDとして言及されます。
 継続的デプロイを実現する過程は、しばしばパイプラインと呼ばれます。つまり、開発者のワークステーションからコードを取り出し、テストと受け入れステージを経て本番へとデプロイする、一連の自動化されたアクションです。
 コンテナ化されたアプリケーションのための典型的なパイプラインは次のようなものとなるでしょう。
1. 開発者がコードの変更をGitリポジトリにプッシュ(アップロード)します。
2. ビルドシステムが最新のコードをビルドして、テストを実行します。
3. すべてのテストに成功すると、コンテナイメージがコンテナレジストリに対してパブリッシュされます。
4. 新たにビルドされたコンテナがステージング環境へ自動的にデプロイされます。
5. ステージング環境では、自動化された受け入れテストが実施されます。
6. 検証されたコンテナイメージが本番環境へデプロイされます。
 ここで重要なポイントは、さまざまな環境を通じたテストおよびデプロイの対象となるアーティファクト (成果物) がソースコードではなくコンテナであることです。ソースコードから実行可能なバイナリができるまでには、さまままな形でエラーの入り込む可能性があるものですが、 コードの代わりにコンテナをテストすれば、そうしたエラーの多くを捕捉して対応できるようになり ます。
 CDの大きなメリットは、本番で驚かないことです。つまり、ステージング段階でテストに成功 している完璧なバイナリイメージでなければ、本番にデプロイされることはありません。

■まとめ
・新しいパイプラインを構築する際には、使用するCDツールの決定が重要なプロセスとなります。本書を通じて言及している各種のツールはいずれも、既存のCDツールのほぼすべてに組み込める可能性が高いと思われます。
・Jenkins、GitLab、Drone、Cloud Build、Spinnakerは、広く普及していてKubernetesとの連携性にも優れたCDツールのごく一部にすぎません。 また、Gitkube、Flux、Keelのように、Kubernetesクラスタへのデプロイの自動化に特化して開発された新世代ツールも続々と登場しています。
・ビルドパイプラインのステップをコードで定義すると、こうしたステップもアプリケーションコードと共に追跡および変更できます。
・開発者はコンテナを利用することで、ビルドのアーティファクトを複数の環境間で次々に渡していくことができます(例えば、テスト、ステージング、および最終的には本番)。理想的な状況では、新しいコンテナを再ビルドする必要もありません。
・Cloud Buildを使用する本書のパイプライン例は、他のツールや他のタイプのアプリケーションにも容易に適応化できるはずです。ビルド、 テスト、デプロイという全体的なステップ構成は、使用するツールにもソフトウェアのタイプにも関係なく、どのCDパイプラインでも基本的に同じです。

15章 オブザーバビリティと監視
■まとめ
・ブラックボックス型の監視チェックは、システムの挙動を外部から観察して予測可能な障害を検出します。
・分散システムでは、アップまたはダウンの状態を単純に区別できないため、従来型監視の限界が露呈します。つまり分散システムでは、サービスが部分的に劣化しているのが定常的な状態であって、それを前提として稼働します。言い換えると、船上では絶対的に正しいことなど何もないのです。
・ログはインシデント発生後のトラブルシューティングには役立ちますが、スケールが困難です。
・メトリクスは、動作している/動作していないという単純な判断を超えて新たな次元を切り開き、システムの数百あるいは数千もの側面について時系列に沿った継続的な数値データを与えてくれます。
・メトリクスはなぜかという疑問の解決に役立ち、問題がある傾向を全面的な機能停止に至る前に特定します。
・トレーシングは、個別のリクエストのライフサイクル全体を通じて正確なタイミングでイベントを記録し、性能の問題をデバッグするのに役立ちます。
・オブザーバビリティとは、従来の監視、ロギング、メトリクス、トレーシング、それにシステムを理解するために利用できる他の方法もすべて統合する概念です。
・オブザーバビリティに取り組むことは、事実とフィードバックに基づくエンジニアリングのチーム文化へと移行することになります。
・ユーザに対応するサービスについては、アップかどうかを外部からのブラックボックス型チェックで確認することがやはり重要です。しかし、独自の監視システムを構築しようとはせず、Uptime Robotなどサードパーティの監視サービスを活用します。
・ユーザがハッピーでないのなら、アップタイムを示す9の数に意味はありません。

16章 Kubernetesにおけるメトリクス
■まとめ
・重要なメトリクスに集中します。サービスの場合はリクエスト、エラー、持続期間(RED)、リソースの場合は使用率、飽和度、エラー(USE)です。
・アプリケーションにインストルメンテーション(測定装置を装備すること、計装)を追加して、内部オブザーバビリティとビジネスKPI、双方の目的のためにカスタムメトリクスを公開します。
・Kubernetesで役に立つメトリクスとしては、クラスタのレベルでは、ノード数、ノードあたりのPod数、ノードのリソース使用率があります。
・Deploymentのレベルでは、Deploymentの数とPodレプリカの数を追跡します。特に、利用できないレプリカ(Unavailable replicas)は、クラスタのキャパシティに関する問題を示している場合があります。
・コンテナのレベルでは、コンテナあたりのリソース使用率 Liveness/Readinessの状態、再起動回数、ネットワークトラフィック、ネットワークエラーを追跡します。
・すべてのサービスで標準レイアウトを用いてダッシュボードを構築し、またシステム全体のバイタルサインを報告する情報ラジエータも構築します。
・メトリクスに基づいてアラートを通知する場合は、 緊急かつ重要で対処可能なアラートに限定します。 アラートがノイズの場合は、疲労を増して士気を損ないます。
・チームが対応する(特に睡眠中や週末の)緊急呼び出しの回数を追跡およびレビューします。
・クラウドネイティブの世界で事実上の標準となっているメトリクス管理ソリューションがPrometheusであり、ほぼすべてのツールやサービスがPrometheusのデータ形式を理解できます。
・サードパーティのマネージドメトリクス管理サービスとしては、 Google Stackdriver、Amazon CloudWatch、Datadog、New Relicなどがあります。 (参考:楽天)

↓全て表示 ↑少なく表示
 
著者略歴
アランデル,ジョン(Arundel,John)
コンピュータ業界で30年以上の経験があるコンサルタント。数冊の技術書の著者であり、世界中のさまざまな企業を対象としてクラウドネイティブインフラとKubernetesに関するコンサルティング業務を行っている。英国コーンウォールのコテージで暮らしている

ドミンガス,ジャスティン(Domingus,Justin)
Kubernetesやクラウドテクノロジを基盤とするDevOps環境で働く運用担当エンジニア。米国ワシントン州シアトルで、妻で最大の親友でもあるエイドリエンと暮らしている

須田一輝(スダカズキ)
ヤフー株式会社所属。2015年からゼットラボ株式会社に出向し、Kubernetesを中心としたインフラ基盤の研究開発・技術支援に従事。近頃は、Kubernetesでの永続ストレージやステートフルアプリケーションの運用に関する調査や開発、技術支援を担当している。Kubernetes Meetup Tokyoの共同主催者で、Kubernetesのアクティブコントリビュータでもある

渡邉了介(ワタナベリョウスケ)
一橋大学社会学部卒業。システムエンジニアを経験したのち翻訳家として独立し、フリーランス歴は30年超。社会や文化とITテクノロジの中間領域に棲息し、児童書の翻訳も行う(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  

「さわって学ぶクラウドインフラ docker基礎からのコンテナ構築」

デファクト技術の「コンテナ」
「わかる」から「使える」へ

 サーバー環境だけでなく幅広く使われている「コンテナ技術」は、もはやデファクト技術と言っても言い過ぎではないでしょう。インフラ技術者だけでなく、アプリケーション開発者にとっても重要な技術です。

 本書は、自分でコンテナ環境を構築できるようになるための本です。題材に「Docker」を使いました。「技術解説書」というより「技術実践書」。IT技術を本当に理解するには理論の学習だけでは不十分で、実際にさわってみることが大事です。そうすることで初めて腹落ちし、「技術がわかる」状態から、「技術が使いこなせる」状態にレベルアップすることができます。

 本書では、Dockerのインストール方法に始まり、基本的なWebサーバーを起動させるところから、永続化、ネットワーク、コンテナイメージへと順番に学ぶことができます。さらに、複数のコンテナを使うことを想定し、「Docker Compose」や「Kubernetes」についても学習できます。Kubernetesは学習ツールとして「Minikube」を用い、最終的に「Amazon EKS」でコンテナを実行するはじめの一歩までを説明します。

 新しい技術の習得は、想像している以上に難しいものです。理解できていない状況でやみくもに技術に触れても、迷子になるばかり。本書では「迷子にさせない」工夫が満載されており、本書の通りに実施すれば、迷うことなく、コンテナ環境を構築できます。

 インフラ技術者の最初の1冊として執筆していますが、アプリケーション開発者のインフラ学習書としても最適です。ぜひあなたも、本書を活用してコンテナ技術を習得してください。

↓全て表示↑少なく表示
 
目次
第1章 コンテナの仕組みと利点
第2章 Dockerを利用できるサーバーを作る
第3章 5分でWebサーバーを起動する
第4章 Dockerの基本操作
第5章 コンテナ内のファイルと永続化
第6章 コンテナのネットワーク
第7章 複数コンテナをまとめて起動するDocker Compose
第8章 イメージを自作する
第9章 Kubernetesを用いたコンテナ運用

↓全て表示↑少なく表示
Users Voice
わかりやすい説明と順番に進めていくため、理解しやすかった。AWSに構築する以外にローカル環境での手順もあるとより良かったと思いました。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
事前に他のレビューでも調べていましたがレビュー通りとても使いやす満足しています。 今後もこのシリーズを買いたいです。 (参考:YahooShopping)

↓全て表示 ↑少なく表示
dockerの基礎から学べるので初学者にオススメ。
以前、別のdockerの書籍を読んだがそちらはかなり実践形式だったので基本的な知識から学べるこの本はよかった。
いまやwindows homeでdockerいじれるのでソフトのインストールとセットアップもだいぶハードル下がったよね。2年前にvirtual boxとか入れて必死にdocker使えるようにしてたの懐かしい〜笑
ただこの本はawsのサーバーを使いながら進めていくので手元のwindows pcでやるならWSL入れといた方が進めやすいと思います。
それにしてもいい加減awsいじれるようにならなくちゃ、、、 (参考:honto)

↓全て表示 ↑少なく表示
 
著者略歴
大澤文孝(オオサワフミタカ)
テクニカル・ライター、プログラマ/システムエンジニア。専門はWebシステム。情報処理技術者(「情報セキュリティスペシャリスト」「ネットワークスペシャリスト」)。Webシステム、データベースシステムを中心とした記事を多数発表

浅居尚(アサイショウ)
静岡大学大学院理工学研究科修士卒。システムエンジニア。情報処理技術者(「情報セキュリティスペシャリスト」「ネットワークスペシャリスト」)。企業プロジェクトにおけるサーバ構築・運用に従事。最近では、電子証明書を使用したセキュリティシステムの運用業務を担当。DockerやRPA(ロボットによる業務自動化技術)などにも取り組んでいる(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  

「Docker実践ガイド 第2版 impress top gearシリーズ」

Docker実践ガイド 第2版 impress top gearシリーズ
(著)古賀 政純
発売日 2019/02/18
総合評価
(4.3)
(2024/12/03 12:03時点)
本書では、技術者だけでなく、IT基盤の方向性の検討や戦略の立案、意思決定を行う立場の方が、導入前の検討を実践できる内容を盛り込みました。具体的には、コンテナの特徴、導入時の検討項目、注意点などのチェックリストを設け、システム構成例などを解説図にまとめ、要点を把握しやすいようにしました。また、大規模データセンター向けのコンテナ基盤構築の経験がない技術者でも、その基礎を理解できるよう、Dockerのインストール手順、使用法などを具体的に記載しています。
 また、今回出版される第2版では、新たに商用版Docker EEの検討項目、構築手順、使用法、セキュリティ管理手法の掲載に加え、Dockerを取り巻くエコシステムについて、2019年時点での最先端のトピックを取り上げました。内容の詳細は目次を参照していただきたいのですが、コンテナの連携を行うDocker Compose、クラスタ化を実現するDocker Swarm、コンテナ向けの仮想化基盤を構築するDocker Machine、GUI管理ツール、CRIUを使ったライブマイグレーション、コンテナ専用OSのCoreOSとRancher OS、コンテナ基盤におけるネットワーキング、周辺機器の使用例、インターネットに接続しない社内コンテナ環境の構築、そして、複数コンテナによるオーケストレーションを実現する人気のKubernetesなどの解説を網羅しています。

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
購入前にお使いの端末で無料サンプルをお試しください。

↓全て表示↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
目次
第1章 Dockerとは?
第2章 Docker導入前の準備
第3章 Docker Community Edition
第4章 Dockerfile
第5章 ネットワーキング
第6章 資源管理
第7章 管理ツール
第8章 CoreOSとRancherOS
第9章 Docker Enterprise Edition
第10章 Kubernetesによるオーケストレーション

↓全て表示↑少なく表示
Users Voice
IT業界入りたて、Dockerって何?っていう人が読むような本ではなかったです。インフラ(仮想環境)をある程度知っている人でないとこの知識は身につかないかなと思います。

docker CE(community edition)とdockerEE(enterprise edition)はそれぞれ結構なページを割いて詳しく説明があり、このレベルの違いが知りたい人にとっては有意義な本なのかなと思います。

docker使ってなんかアプリ作ってみたいなレベルの人の実践ガイドでは無いかな。 (参考:楽天)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元楽天Books)

 
著者略歴
古賀政純(コガマサズミ)
兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年に入社後、UNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSIの経験も持つ。2005年、大手企業のLinuxサーバー提案で社長賞受賞。2006年、米国ヒューレット・パッカードからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。オープンソースを活用したサーバーのSEとしてプリセールスMVPを4度受賞。現在は、Hadoopを軸にオープンソースを駆使する大規模サーバーのプリセールスSEとして、技術検証及び執筆に従事。Red Hat Certified Engineer、Novell Certified Linux Professional、Red Hat Certified Virtualization Administrator、EXIN Cloud、Red Hat Open Stack、HPE ASE、Hadoop(CCAH)などの技術者認定資格を保有(本データはこの書籍が刊行された当時に掲載されていたものです)

↓全て表示↑少なく表示

  

Docker本「Kindle Unlmited 読み放題 人気ランキング」

「Kindle Unlimited」は、Amazonの定額本読み放題サービス。

実はそこにDockerの本もそこそこあるんです。すなわち、定額で何冊も学習することも可能

Kindle Unlimitedの主な特徴としては、おおよそ以下の通り。

  • 雑誌がかなり充実
  • 豊富なKindle個人出版本がほとんど読み放題
  • 最近は出版社単行本も対応増加

個人的には雑誌が、IT系(CG WORLD等)、ガジェット系(Get Navi等)、ゲーム(ファミ通等)、など見たい雑誌が幅広く読めるのが大きな魅力。2冊以上読みたいものがあるだけで確実にお得です。

また、30日無料体験も可能なので、体験期間を利用して無料で学習してみるのもお得な学習法です。

以下がKindle Unlimited対応のDocker関係の本人気ランキングです。

(2024/12/03 12:03 更新)
Rank製品価格
1
600円
2
990円
3
990円
4
手軽に使うDockerの本 コピって使える用途別コンテナカタログ...
発売日 2022/06/17
山田 英伸 (インプレス NextPublishing)
Kindle Unlimited対象
総合評価
(4.3)
990円
5
600円
6
2,860円
1,430円
1,430円
2,860円
7
Dockerコンテナ実践検証 ThinkIT Books
発売日 2015/07/24
佐藤 司, 冨永 善視, 森元 敏雄 (インプレス)
Kindle Unlimited対象
総合評価
(3)
1,540円
8
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築...
発売日 2020/06/11
大澤 文孝, 浅居 尚 (日経BP)
Kindle Unlimited対象
総合評価
(4.3)
2,970円
2,673円
2,970円
2,970円
9
1,100円
10
398円

 

おまけ:本より高コスパ?「Udemy Docker/Kubernetesおすすめ講座」

UdemyではDockerを基礎から応用までトータルで学べる学習講座があります。

こちらが、セール時には2千円程度で購入可能で、講座によっては本よりコスパよく学習が可能です。

講座は、買い切り型ながら更新あり、質問可能、30日間返金も可能、という本以上の手厚いサポートがあるのが魅力。

以下の表が、Dockerの学習講座例。セールの場合、かなりおすすめなのでぜひトライしてみください。

Udemyについては、以下のページでも詳しく紹介しているので覗いてみてください。

人気
Rank
学習コース評価
1
(4.6)
総評価数 1268件
2
(4.6)
総評価数 1519件
3
駆け出しエンジニアのためのDocker入門
発売日 2021/07/21
受講者 13,155人
通常 27,800円
現在 27,800円
(4.3)
総評価数 2253件
4
Linux とネットワークの基礎から学ぶ Docker 入門
発売日 2022/06/03
受講者 7,302人
通常 4,200円
現在 4,200円
(4.5)
総評価数 756件
5
(4.4)
総評価数 1430件

 

関連:AWS、GCP、Azureでコンテナ開発を実運用

Docker、Kubernetesによるコンテナ開発は、主要なクラウドサービスは対応しており、そのまま利用可能。開発から本番運用環境まで、どんどん活用していきましょう。

以下では主要なWebインフラサービスのAWS、Microsoft Azure、GCPについても紹介しています。合わせて参照ください。



いじょうでっす。

コメント

タイトルとURLをコピーしました