関連サイト
本書の関連ページが用意されています。
内容紹介
Kubernetes解説書の決定版がついに改訂!
Kubernetesはコンテナ化されたアプリケーションのデプロイ、スケーリングなどの管理を自動化する「コンテナオーケストレーションエンジン」です。「クラウドネイティブ」を実現するためのコア技術として、現在多くのシステムでの利用が進んでいます。
本書では、アプリケーション開発者やインフラエンジニアを対象に、Kubernetesの機能やそのエコシステムについて網羅的に解説します。好評をいただいた前版を全面的に見直し、バージョン1.18に対応しました(アルファ機能を含む)。前版以降に追加された機能や変更点にも言及し、最新のKubernetesを活用するための多くの知見を提供します。
これまでKubernetesを触ったことがない方でもそのコンセプトを理解し、実際にアプリケーションをコンテナ化して実行できるようになることを目標としています。また、Kubernetesの認定資格であるCKA(Certified Kubernetes Administrator)およびCKAD(Certified Kubernetes Application Developer)取得のための副読本として、学習に役立つ様々な知識を得ることも可能です
新版は、285枚の図、312個のサンプルマニフェスト、257個のよくある質問とその回答により、より分かりやすいものとなっています。Kubernetesを使ったプロダクションレベルでの活用を目指す人のための、価値ある一冊です。
書誌情報
- 著者: 青山真也
- 発行日: 2020-08-07 (紙書籍版発行日: 2020-08-07)
- 最終更新日: 2024-08-11
- バージョン: 1.8.0
- ページ数: 688ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
コンテナを業務レベルで使いこなすことを⽬指すエンジニア層や、Cloud Native、コンテナなどのOSSプロダクトの動向に注⽬する⼈
著者について
青山真也
株式会社サイバーエージェントAI 事業本部 2016 年入社。OpenStackを使ったプライベートクラウドやGKE 互換なコンテナプラットフォームをゼロから構築。CyberAgentではKubernetes/CloudNative 領域のDeveloperExperts としても従事。国内カンファレンスでのKeynoteや海外カンファレンス等、登壇経験多数。世界で2番目にKubernetesの認定資格を取得。著書に『Kubernetes 完全ガイド』『みんなのDocker/Kubernetes』。現在はOSSへのContribute 活動をはじめ、Cloud Native Days TokyoのCo-chair、CNCF 公式のCloud Native Meetup TokyoやKubernetes MeetupTokyoのOrganizerなどコミュニティ活動にも従事。
目次
はじめに
本書について
第1章 Docker の復習と「Hello, Kubernetes」
- 1.1 Docker の復習
- 1.2 さあ、Kubernetes の世界へ
第2章 なぜKubernetes が必要なのか?
- 2.1 Kubernetes とは
- 2.2 Kubernetes の歴史
- 2.3 Kubernetes を使うと何ができるのか
- 2.4 まとめ
第3章 Kubernetes 環境の選択肢
- 3.1 Kubernetes 環境の種別
- 3.2 ローカルKubernetes
- 3.3 Kubernetes 構築ツール
- 3.4 パブリッククラウド上のマネージドKubernetes サービス
- 3.5 Kubernetes プレイグラウンド/3.6 まとめ
第4章 API リソースとkubectl
- 4.1 本章以降を読み進めるための準備
- 4.2 Kubernetes の基礎
- 4.3 Kubernetes とリソース
- 4.4 Namespace による仮想的なクラスタの分離
- 4.5 CLI ツールkubectl
- 4.6 まとめ
第5章 Workloads APIs カテゴリ
- 5.1 Workloads APIs カテゴリの概要
- 5.2 Pod
- 5.3 ReplicaSet / ReplicationController
- 5.4 Deployment
- 5.5 DaemonSet
- 5.6 StatefulSet
- 5.7 Job
- 5.8 CronJob
- 5.9 まとめ
第6章 Service APIs カテゴリ
- 6.1 Service APIs カテゴリの概要
- 6.2 Kubernetes クラスタのネットワークとService
- 6.3 ClusterIP Service
- 6.4 ExternalIP Service
- 6.5 NodePort Service
- 6.6 LoadBalancer Service
- 6.7 Service のその他の機能
- 6.8 Headless Service(None)
- 6.9 ExternalName Service
- 6.10 None-Selector Service
- 6.11 Ingress
- 6.12 まとめ
第7章 Config & Storage APIs カテゴリ
- 7.1 Config & Storage APIs カテゴリの概要/7.2 環境変数の利用
- 7.3 Secret
- 7.4 ConfigMap
- 7.5 PersistentVolumeClaim
- 7.6 Volume
- 7.7 PersistentVolume(PV)
- 7.8 PersistentVolumeClaim (PVC)
- 7.9 volumeMounts で利用可能なオプション
- 7.10 まとめ
第8章 Cluster APIs カテゴリとMetadata APIs カテゴリ
- 8.1 Cluster APIs カテゴリとMetadata APIs カテゴリの概要
- 8.2 Node
- 8.3 Namespace
- 8.4 まとめ
第9章 リソース管理とオートスケーリング
- 9.1 リソースの制限
- 9.2 Cluster Autoscaler とリソース不足
- 9.3 LimitRange によるリソース制限
- 9.4 QoS Class
- 9.5 ResourceQuota によるNamespace のリソースクォータ制限
- 9.6 HorizontalPodAutoscaler(HPA)
- 9.7 VerticalPodAutoscaler(VPA)
- 9.8 まとめ
第10章 ヘルスチェックとコンテナのライフサイクル
- 10.1 ヘルスチェック
- 10.2 コンテナのライフサイクルと再始動(restartPolicy)
- 10.3 Init Containers
- 10.4 起動直後と終了直前に任意のコマンドを実行する(postStart / preStop)
- 10.5 Pod の安全な停止とタイミング
- 10.6 リソースを削除した時の挙動
- 10.7 まとめ
第11章 メンテナンスとノードの停止
- 11.1 ノードの停止とPod の停止/11.2 スケジューリング対象からの除外と復帰(cordon / uncordon)
- 11.3 ノードの排出処理によるPod の退避(drain)
- 11.4 PodDisruptionBudget(PDB)による安全な退避
- 11.5 まとめ
第12章 高度で柔軟なスケジューリング
- 12.1 フィルタリングとスコアリング/12.2 マニフェストで指定するスケジューリング
- 12.3 ビルトインノードラベルとラベルの追加
- 12.4 nodeSelector(Simple Node Affinity)
- 12.5 Node Affinity
- 12.6 matchExpressions のオペレータとset-based 条件
- 12.7 Node Anti-Affinity/12.8 Inter-Pod Affinity
- 12.9 Inter-Pod Anti-Affinity
- 12.10 複数の条件を組み合わせたPod のスケジューリング
- 12.11 1.18 Beta TopologySpreadConstraints によるトポロジ均衡
- 12.12 Taints とTolerations
- 12.13 PriorityClass によるPod の優先度と退避
- 12.14 その他のスケジューリング
- 12.15 まとめ
第13章 セキュリティ
- 13.1 ServiceAccount
- 13.2 RBAC(Role Based Access Control)
- 13.3 SecurityContext
- 13.4 PodSecurityContext
- 13.5 1.18 Beta PodSecurityPolicy
- 13.6 NetworkPolicy
- 13.7 認証/認可とAdmission Control
- 13.8 1.18 Alpha PodPreset
- 13.9 Secret リソースの暗号化
- 13.10 まとめ
第14章 マニフェストの汎用化を行うオープンソースソフトウェア
- 14.1 マニフェストの汎用化/14.2 Helm
- 14.3 Kustomize
- 14.4 Ksonnet/14.5 その他のマニフェスト関連のツール
- 14.6 まとめ
第15章 モニタリング
- 15.1 Kubernetes における監視/15.2 Datadog
- 15.3 Prometheus
- 15.4 まとめ
第16章 コンテナログの集約
- 16.1 コンテナ上のアプリケーションのログ出力/16.2 Fluentd によるログ集約
- 16.3 Datadog Logs によるログ集約
- 16.4 Grafana Loki によるログ集約/16.5 まとめ
第17章 Kubernetes 環境でのCI/CD
- 17.1 Kubernetes 環境でのCI/CD/17.2 GitOps
- 17.3 GitOps に適したCI ツール/17.4 CI 時にKubernetes のマニフェストのチェックを行う
- 17.5 GitOps に適したCD ツール
- 17.6 開発環境を整えるツール
- 17.7 まとめ
第18章 マイクロサービスアーキテクチャとサービスメッシュ
- 18.1 マイクロサービスアーキテクチャとは
- 18.2 サービスメッシュとは
- 18.3 Istio
- 18.4 まとめ
第19章 Kubernetes のアーキテクチャを知る
- 19.1 Kubernetes のアーキテクチャの概略/19.2 etcd
- 19.3 kube-apiserver
- 19.4 kube-scheduler/19.5 kube-controller-manager
- 19.6 kubelet
- 19.7 kube-proxy
- 19.8 CNI(Container Network Interface) Plugin/19.9 kube-dns(CoreDNS)
- 19.10 cloud-controller-manager
- 19.11 その他のコンポーネントとクラスタのチェック/19.12 CustomResourceDefinitionとOperator
- 19.13 まとめ
第20章 Kubernetes とこれから
- 20.1 Kubernetes を取り巻く標準化
- 20.2 Kubernetes とエコシステム
- 20.3 まとめ
付録A 巻末付録
- A.1 kubectl 使用時におけるリソースの省略表現
- A.2 よくある質問とその答え