入門 Kubernetes

[cover photo]
TOPICS
System/Network
発行年月日
PRINT LENGTH
248
ISBN
978-4-87311-840-6
原書
Kubernetes: Up and Running
FORMAT
Print PDF EPUB
Ebook
3,080円
Ebookを購入する
Print
3,080円

本書は、Kubernetesコンテナオーケストレータの核となるコンセプトから使い方までを解説するとともに、アプリケーションの開発やメンテナンスを改善するためにKubernetesとそのAPIがどのように役立つのかを説明します。
はじめにKubernetesの概要と、Dockerなどのコンテナ技術を利用したアプリケーション開発の利点と使用方法について述べ、次にKubernetes自体をデプロイする方法を詳述します。また、Pod、LabelとAnnotation、Service、ReplicaSetなど、Kubernetesでサービスをデプロイする際に知っておくべき基本要素をまとめ、DaemonSet、Job、ConfigMapとSecretといったKubernetesにおける特別なオブジェクトについても学習します。そして、アプリケーションのライフサイクルに関係するDeploymentや、Kubernetesとストレージの統合について学び、実際に使われているアプリケーションをKubernetes上でデプロイする方法を紹介します。
Kubernetesの開発者たちが解説する本書は、クラウドネイティブなアプリケーションを開発したいエンジニア必携の一冊です。

翻訳者によるサポートページ

目次

はじめに

1章 Kubernetes入門
    1.1 ベロシティ
        1.1.1 イミュータブルであることの価値
        1.1.2 宣言的設定
        1.1.3 自己回復するシステム
    1.2 サービスとチームのスケール
        1.2.1 分離
        1.2.2 アプリケーションとクラスタの簡単なスケール
        1.2.3 マイクロサービスによる開発チームのスケール
        1.2.4 一貫性とスケールのための依存関係の切り離し
    1.3 インフラの抽象化
    1.4 効率性
    1.5 まとめ

2章 コンテナの作成と起動
    2.1 コンテナイメージ
        2.1.1 Dockerイメージフォーマット
    2.2 Dockerでのアプリケーションイメージの作成
        2.2.1 Dockerfile
        2.2.2 イメージのセキュリティ
        2.2.3 イメージサイズの最適化
    2.3 リモートレジストリへのイメージの保存
    2.4 Dockerコンテナランタイム
        2.4.1 Dockerでコンテナを動かす
        2.4.2 kuardアプリケーションへのアクセス
        2.4.3 リソース使用量の制限
    2.5 後片付け
    2.6 まとめ

3章 Kubernetesクラスタのデプロイ
    3.1 パブリッククラウドへの Kubernetesのインストール
        3.1.1 Google Kubernetes Engineへの Kubernetesのインストール
        3.1.2 Azure Container Serviceへの Kubernetesのインストール
        3.1.3 Amazon Web Serviceへの Kubernetesのインストール
    3.2 minikubeを使ったローカルへの Kubernetesのインストール
    3.3 Raspberry Piで Kubernetesを動かす
    3.4 Kubernetesクライアント
        3.4.1 クラスタのステータス
        3.4.2 Kubernetesのワーカノードの表示
    3.5 クラスタのコンポーネント
        3.5.1 Kubernetes proxy
        3.5.2 Kubernetes DNS
        3.5.3 Kubernetesの UI
    3.6 まとめ

4章 よく使う kubectlコマンド
    4.1 Namespace
    4.2 Context
    4.3 Kubernetes APIオブジェクトの参照
    4.4 Kubernetesオブジェクトの作成、更新、削除
    4.5 オブジェクトの Labelと Annotation
    4.6 デバッグ用コマンド
    4.7 まとめ

5章 Pod
    5.1 Kubernetesにおける Pod
    5.2 Pod単位で考える
    5.3 Podマニフェスト
        5.3.1 Podの作成
        5.3.2 Podマニフェストの作成
    5.4 Podを動かす
        5.4.1 Podの一覧表示
        5.4.2 Podの詳細情報
        5.4.3 Podの削除
    5.5 Podへのアクセス
        5.5.1 ポートフォワードの使用
        5.5.2 ログからの詳細情報の取得
        5.5.3 execを使用したコンテナ内でコマンド実行
        5.5.4 コンテナとローカル間でのファイル転送
    5.6 ヘルスチェック
        5.6.1 Liveness probe
        5.6.2 Readiness probe
        5.6.3 ヘルスチェックの種類
    5.7 リソース管理
        5.7.1 リソース要求 : 必要最低限のリソース
        5.7.2 limitsを使ったリソース使用量の制限
    5.8 Volumeを使ったデータの永続化
        5.8.1 Volumeと Podの組み合わせ
        5.8.2 Volumeと Podを組み合わせる別の方法
        5.8.3 リモートディスクを使った永続化データ
    5.9 すべてまとめて実行する
    5.10 まとめ

6章 Labelと Annotation
    6.1 Label
        6.1.1 Labelの適用
        6.1.2 Labelの変更
        6.1.3 Labelセレクタ
        6.1.4 APIオブジェクト内の Labelセレクタ
    6.2 Annotation
        6.2.1 Annotationの定義
    6.3 後片付け
    6.4 まとめ

7章 サービスディスカバリ
    7.1 サービスディスカバリとは
    7.2 Serviceオブジェクト
        7.2.1 Service DNS
        7.2.2 Readiness probe
    7.3 クラスタの外に目を向ける
    7.4 クラウドとの統合
    7.5 より高度な詳細
        7.5.1 Endpoints
        7.5.2 手動でのサービスディスカバリ
        7.5.3 kube-proxyとクラスタ IP
        7.5.4 クラスタ IP関連の環境変数
    7.6 後片付け
    7.7 まとめ

8章 ReplicaSet
    8.1 調整ループ
    8.2 Podと ReplicaSetの関連付け
        8.2.1 既存のコンテナを養子に入れる
        8.2.2 コンテナの検疫
    8.3 ReplicaSetを使ったデザイン
    8.4 ReplicaSetの定義
        8.4.1 Podテンプレート
        8.4.2 Label
    8.5 ReplicaSetの作成
    8.6 ReplicaSetの調査
        8.6.1 Podからの ReplicaSetの特定
        8.6.2 ReplicaSetに対応する Podの集合の特定
    8.7 ReplicaSetのスケール
        8.7.1 kubectl scaleを使った命令的スケール
        8.7.2 kubectl applyを使った宣言的スケール
        8.7.3 ReplicaSetのオートスケール
    8.8 ReplicaSetの削除
    8.9 まとめ

9章 DaemonSet
    9.1 DaemonSetスケジューラ
    9.2 DaemonSetの作成
    9.3 特定ノードに対する DaemonSetの割り当ての制限
        9.3.1 ノードへの Labelの追加
        9.3.2 ノードセレクタ
    9.4 DaemonSetの更新
        9.4.1 個別の Podの削除による DaemonSetの更新
        9.4.2 DaemonSetのローリングアップデート
    9.5 DaemonSetの削除
    9.6 まとめ

10章 Job
    10.1 Jobオブジェクト
    10.2 Jobのパターン
        10.2.1 1回限り
        10.2.2 一定数成功するまで並列実行
        10.2.3 並列実行キュー
    10.3 まとめ

11章 ConfigMapと Secret
    11.1 ConfigMap
        11.1.1 ConfigMapの作成
        11.1.2 ConfigMapの使用
    11.2 Secret
        11.2.1 Secretの作成
        11.2.2 Secretの使用
        11.2.3 プライベートDockerレジストリ
    11.3 命名規則
    11.4 ConfigMapと Secretの管理
        11.4.1 一覧表示
        11.4.2 作成
        11.4.3 更新
    11.5 まとめ

12章 Deployment
    12.1 最初の Deployment
        12.1.1 Deploymentの仕組み
    12.2 Deploymentの作成
    12.3 Deploymentの管理
    12.4 Deploymentの更新
        12.4.1 Deploymentのスケール
        12.4.2 コンテナイメージの更新
        12.4.3 ロールアウト履歴
    12.5 Deployment戦略
        12.5.1 Recreate戦略
        12.5.2 RollingUpdate戦略
        12.5.3 サービスの正常性を確保するゆっくりしたロールアウト
    12.6 Deploymentの削除
    12.7 まとめ

13章 ストレージソリューションとKubernetesの統合
    13.1 外部サービスのインポート
        13.1.1 セレクタのないService
        13.1.2 外部サービスの制限:ヘルスチェック
    13.2 信頼性のある単一 Podの実行
        13.2.1 MySQLの単一Podでの実行
        13.2.2 動的ボリューム割り当て
    13.3 StatefulSetを使ったKubernetesネイティブなストレージ
        13.3.1 StatefulSetの特徴
        13.3.2 StatefulSetを使った MongoDBの手動レプリケーション設定
        13.3.3 MongoDBクラスタ構築の自動化
        13.3.4 PersistentVolumeと StatefulSet
        13.3.5 最後のポイント : Readiness probe
    13.4 まとめ

14章 実用的なアプリケーションのデプロイ
    14.1 Parse
        14.1.1 前提条件
        14.1.2 parse-serverの構築
        14.1.3 parse-serverのデプロイ
        14.1.4 Parseのテスト
    14.2 Ghost
        14.2.1 Ghostの設定
    14.3 Redis
        14.3.1 Redisの設定
        14.3.2 Redisの Serviceの作成
        14.3.3 Redisのデプロイ
        14.3.4 Redis Clusterを触ってみる
    14.4 まとめ

付録A Raspberry.Piを使った Kubernetesクラスタ構築
    A.1 パーツ一覧
    A.2 イメージの書き込み
    A.3 マスタの起動
        A.3.1 ネットワークのセットアップ
        A.3.2 Kubernetesのインストール
        A.3.3 クラスタのセットアップ
    A.4 まとめ

訳者あとがき
索引