入門 Kubernetes

Book description

本書は、Kubernetesコンテナオーケストレータの核となるコンセプトから使い方までを解説するとともに、アプリケーションの開発やメンテナンスを改善するためにKubernetesとそのAPIがどのように役立つのかを説明します。はじめにKubernetesの概要と、Dockerなどのコンテナ技術を利用したアプリケーション開発の利点と使用方法について述べ、次にKubernetes自体をデプロイする方法を詳述します。そして、アプリケーションのライフサイクルに関係するDeploymentや、Kubernetesとストレージの統合について学び、実際に使われているアプリケーションをKubernetes上でデプロイする方法を紹介します。

Table of contents

  1. 大扉
  2. 原書大扉
  3. クレジット
  4. 献辞
  5. はじめに
    1. Kubernetesへ捧げる言葉
    2. この本を読むべき人
    3. この本を書いた理由
    4. 今日のクラウドネイティブなアプリケーションへひとこと
    5. この本の構成
    6. オンラインリソース
    7. この本で使用する慣例
    8. サンプルコードの使用
      1. 日本語版の追加情報について
    9. お問い合わせ先
  6. 1章 Kubernetes入門
    1. 1.1 ベロシティ
      1. 1.1.1 イミュータブルであることの価値
      2. 1.1.2 宣言的設定
      3. 1.1.3 自己回復するシステム
    2. 1.2 サービスとチームのスケール
      1. 1.2.1 分離
      2. 1.2.2 アプリケーションとクラスタの簡単なスケール
      3. 1.2.3 マイクロサービスによる開発チームのスケール
      4. 1.2.4 一貫性とスケールのための依存関係の切り離し
    3. 1.3 インフラの抽象化
    4. 1.4 効率性
    5. 1.5 まとめ
  7. 2章 コンテナの作成と起動
    1. 2.1 コンテナイメージ
      1. 2.1.1 Dockerイメージフォーマット
      2. コンテナのレイヤ
    2. 2.2 Dockerでのアプリケーションイメージの作成
      1. 2.2.1 Dockerfile
      2. 2.2.2 イメージのセキュリティ
      3. 2.2.3 イメージサイズの最適化
    3. 2.3 リモートレジストリへのイメージの保存
    4. 2.4 Dockerコンテナランタイム
      1. 2.4.1 Dockerでコンテナを動かす
      2. 2.4.2 kuardアプリケーションへのアクセス
      3. 2.4.3 リソース使用量の制限
    5. 2.5 後片付け
    6. 2.6 まとめ
  8. 3章 Kubernetesクラスタのデプロイ
    1. 3.1 パブリッククラウドへのKubernetesのインストール
      1. 3.1.1 Google Kubernetes EngineへのKubernetesのインストール
      2. 3.1.2 Azure Container ServiceへのKubernetesのインストール
      3. 3.1.3 Amazon Web ServiceへのKubernetesのインストール
    2. 3.2 minikubeを使ったローカルへのKubernetesのインストール
    3. 3.3 Raspberry PiでKubernetesを動かす
    4. 3.4 Kubernetesクライアント
      1. 3.4.1 クラスタのステータス
      2. 3.4.2 Kubernetesのワーカノードの表示
    5. 3.5 クラスタのコンポーネント
      1. 3.5.1 Kubernetes proxy
      2. 3.5.2 Kubernetes DNS
      3. 3.5.3 KubernetesのUI
    6. 3.6 まとめ
  9. 4章 よく使うkubectlコマンド
    1. 4.1 Namespace
    2. 4.2 Context
    3. 4.3 Kubernetes APIオブジェクトの参照
    4. 4.4 Kubernetesオブジェクトの作成、更新、削除
    5. 4.5 オブジェクトのLabelとAnnotation
    6. 4.6 デバッグ用コマンド
    7. 4.7 まとめ
  10. 5章 Pod
    1. 5.1 KubernetesにおけるPod
    2. 5.2 Pod単位で考える
    3. 5.3 Podマニフェスト
      1. 5.3.1 Podの作成
      2. 5.3.2 Podマニフェストの作成
    4. 5.4 Podを動かす
      1. 5.4.1 Podの一覧表示
      2. 5.4.2 Podの詳細情報
      3. 5.4.3 Podの削除
    5. 5.5 Podへのアクセス
      1. 5.5.1 ポートフォワードの使用
      2. 5.5.2 ログからの詳細情報の取得
      3. 5.5.3 execを使用したコンテナ内でコマンド実行
      4. 5.5.4 コンテナとローカル間でのファイル転送
    6. 5.6 ヘルスチェック
      1. 5.6.1 Liveness probe
      2. 5.6.2 Readiness probe
      3. 5.6.3 ヘルスチェックの種類
    7. 5.7 リソース管理
      1. 5.7.1 リソース要求 : 必要最低限のリソース
      2. 5.7.2 limitsを使ったリソース使用量の制限
    8. 5.8 Volumeを使ったデータの永続化
      1. 5.8.1 VolumeとPodの組み合わせ
      2. 5.8.2 VolumeとPodを組み合わせる別の方法
      3. 5.8.3 リモートディスクを使った永続化データ
    9. 5.9 すべてまとめて実行する
    10. 5.10 まとめ
  11. 6章 LabelとAnnotation
    1. 6.1 Label
      1. 6.1.1 Labelの適用
      2. 6.1.2 Labelの変更
      3. 6.1.3 Labelセレクタ
      4. 6.1.4 APIオブジェクト内のLabelセレクタ
    2. 6.2 Annotation
      1. 6.2.1 Annotationの定義
    3. 6.3 後片付け
    4. 6.4 まとめ
  12. 7章 サービスディスカバリ
    1. 7.1 サービスディスカバリとは
    2. 7.2 Serviceオブジェクト
      1. 7.2.1 Service DNS
      2. 7.2.2 Readiness probe
    3. 7.3 クラスタの外に目を向ける
    4. 7.4 クラウドとの統合
    5. 7.5 より高度な詳細
      1. 7.5.1 Endpoints
      2. 7.5.2 手動でのサービスディスカバリ
      3. 7.5.3 kube-proxyとクラスタIP
      4. 7.5.4 クラスタIP関連の環境変数
    6. 7.6 後片付け
    7. 7.7 まとめ
  13. 8章 ReplicaSet
    1. 8.1 調整ループ
    2. 8.2 PodとReplicaSetの関連付け
      1. 8.2.1 既存のコンテナを養子に入れる
      2. 8.2.2 コンテナの検疫
    3. 8.3 ReplicaSetを使ったデザイン
    4. 8.4 ReplicaSetの定義
      1. 8.4.1 Podテンプレート
      2. 8.4.2 Label
    5. 8.5 ReplicaSetの作成
    6. 8.6 ReplicaSetの調査
      1. 8.6.1 PodからのReplicaSetの特定
      2. 8.6.2 ReplicaSetに対応するPodの集合の特定
    7. 8.7 ReplicaSetのスケール
      1. 8.7.1 kubectl scaleを使った命令的スケール
      2. 8.7.2 kubectl applyを使った宣言的スケール
      3. 8.7.3 ReplicaSetのオートスケール
    8. 8.8 ReplicaSetの削除
    9. 8.9 まとめ
  14. 9章 DaemonSet
    1. 9.1 DaemonSetスケジューラ
    2. 9.2 DaemonSetの作成
    3. 9.3 特定ノードに対するDaemonSetの割り当ての制限
      1. 9.3.1 ノードへのLabelの追加
      2. 9.3.2 ノードセレクタ
    4. 9.4 DaemonSetの更新
      1. 9.4.1 個別のPodの削除によるDaemonSetの更新
      2. 9.4.2 DaemonSetのローリングアップデート
    5. 9.5 DaemonSetの削除
    6. 9.6 まとめ
  15. 10章 Job
    1. 10.1 Jobオブジェクト
    2. 10.2 Jobのパターン
      1. 10.2.1 1回限り
      2. 10.2.2 一定数成功するまで並列実行
      3. 10.2.3 並列実行キュー
    3. 10.3 まとめ
  16. 11章 ConfigMapとSecret
    1. 11.1 ConfigMap
      1. 11.1.1 ConfigMapの作成
      2. 11.1.2 ConfigMapの使用
    2. 11.2 Secret
      1. 11.2.1 Secretの作成
      2. 11.2.2 Secretの使用
      3. 11.2.3 プライベートDockerレジストリ
    3. 11.3 命名規則
    4. 11.4 ConfigMapとSecretの管理
      1. 11.4.1 一覧表示
      2. 11.4.2 作成
      3. 11.4.3 更新
    5. 11.5 まとめ
  17. 12章 Deployment
    1. 12.1 最初のDeployment
      1. 12.1.1 Deploymentの仕組み
    2. 12.2 Deploymentの作成
    3. 12.3 Deploymentの管理
    4. 12.4 Deploymentの更新
      1. 12.4.1 Deploymentのスケール
      2. 12.4.2 コンテナイメージの更新
      3. 12.4.3 ロールアウト履歴
    5. 12.5 Deployment戦略
      1. 12.5.1 Recreate戦略
      2. 12.5.2 RollingUpdate戦略
      3. 12.5.3 サービスの正常性を確保するゆっくりしたロールアウト
    6. 12.6 Deploymentの削除
    7. 12.7 まとめ
  18. 13章 ストレージソリューションとKubernetesの統合
    1. 13.1 外部サービスのインポート
      1. 13.1.1 セレクタのないService
      2. 13.1.2 外部サービスの制限 : ヘルスチェック
    2. 13.2 信頼性のある単一Podの実行
      1. 13.2.1 MySQLの単一Podでの実行
      2. 13.2.2 動的ボリューム割り当て
    3. 13.3 StatefulSetを使ったKubernetesネイティブなストレージ
      1. 13.3.1 StatefulSetの特徴
      2. 13.3.2 StatefulSetを使ったMongoDBの手動レプリケーション設定
      3. 13.3.3 MongoDBクラスタ構築の自動化
      4. 13.3.4 PersistentVolumeとStatefulSet
      5. 13.3.5 最後のポイント : Readiness probe
    4. 13.4 まとめ
  19. 14章 実用的なアプリケーションのデプロイ
    1. 14.1 Parse
      1. 14.1.1 前提条件
      2. 14.1.2 parse-serverの構築
      3. 14.1.3 parse-serverのデプロイ
      4. 14.1.4 Parseのテスト
    2. 14.2 Ghost
      1. 14.2.1 Ghostの設定
    3. 14.3 Redis
      1. 14.3.1 Redisの設定
      2. 14.3.2 RedisのServiceの作成
      3. 14.3.3 Redisのデプロイ
      4. 14.3.4 Redis Clusterを触ってみる
    4. 14.4 まとめ
  20. 付録A Raspberry Piを使ったKubernetesクラスタ構築
    1. A.1 パーツ一覧
    2. A.2 イメージの書き込み
    3. A.3 マスタの起動
      1. A.3.1 ネットワークのセットアップ
      2. A.3.2 Kubernetesのインストール
      3. A.3.3 クラスタのセットアップ
    4. A.4 まとめ
  21. 訳者あとがき
  22. 著者紹介
  23. 奥付

Product information

  • Title: 入門 Kubernetes
  • Author(s): Kelsey Hightower, Brendan Burns, Joe Beda, 松浦 隼人
  • Release date: March 2018
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118406

You might also like

book

詳解 Terraform 第3版 ―Infrastructure as Codeを実現する

by Yevgeniy Brikman, 松浦 隼人

本書は、Terraformのシンプルな宣言的表現によって、コマンド操作で、インフラをデプロイし管理する方法を豊富なサンプルコードを使って解説します。 Terraformがインフラの状態をどのように管理し、ファイルのレイアウト、分離、ロックにどのように影響するかを学びます。またTerraformを使ったサーバクラスタやロードバランサ、データベースのデプロイ、Terraformモジュールでの再利用可能なインフラの作成、ゼロダウンタイムデプロイを実現するための高度なTerraformの文法を解説します。さらにTerraformの各種ファイルにスケーラビリティを持たせた状態で管理する方法や、パスワードなどの機密情報をTerraformでうまく管理する方法、テストまでを詳述します。 Terraformの基本から、大規模なトラフィックと多数の開発者チームをサポートするフルスタックの運用までを包括的に学ぶ本書は、開発者、システム管理者必携の一冊です。Terraformバージョン1.0以降対応。

book

Docker

by Adrian Mouat, Sky株式会社 玉川 竜司

本書はオープンソースのコンテナ管理ソフトウェア、Dockerの基礎から応用までを網羅した総合的な解説書です。はじめに開発環境をセットアップし、シンプルなWebアプリケーションのビルドについて解説した上で、コンテナの開発、テスト、結合に加えて、デプロイの方法、実動システムの効率的なモニタリングとロギングを紹介します。そして複数のホストからなるDockerコンテナのクラスタを、安全かつ高い信頼性の下で実行するために必要な高度なテクニックやツールについて紹介します。さらにネットワークやセキュリティについても詳述。Dockerとそのエコシステムを本格的に活用したい開発者、運用エンジニア、システム開発者必携の一冊です。

book

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス

by Kief Morris, 宮下 剛輔, 長尾 高弘

本書は、はじめにInfrastructure as Codeの原則と考え方を説明し、次にダイナミックインフラストラクチャプラットフォーム、インフラストラクチャ定義ツール、サーバ構成ツール、インフラストラクチャサービスの4つにカテゴライズして解説します。その上で、プロビジョニングやサーバーテンプレート管理のパターンから、テスト、変更管理パイプライン、組織やワークフローのプラクティスまでを詳述しており、Infrastructure as Codeを網羅的に理解することができます。各ツールの使い方よりも、背景にあるコンセプトや考え方の説明に重点を置くことで、特定のツールに縛られることなく、Infrastructure as Codeを適切に実現することを目指します。

book

Hands-On Microservices with Kubernetes

by Gigi Sayfan

Enhance your skills in building scalable infrastructure for your cloud-based applications Key Features Learn to design …