関連サイト
本書の関連ページが用意されています。
内容紹介
コンテナオーケストレーションの業界標準 クラウドネイティブ開発の第一歩を踏み出そう!
Kubernetes認定資格(Certified Kubernetes Administrator/Certified Kubernetes Application Developer)保有者直伝! プロダクション環境で培われた、Kubernetesを使い倒すための実践ノウハウが満載の一冊です。
Kubernetesはコンテナ化されたアプリケーションのデプロイ、スケーリング、および管理を自動化するためのプラットフォーム(コンテナオーケストレーションエンジン)です。 本書籍では、Kubernetesを触ったことがない方でもKubernetesのコンセプトを理解し、実際にアプリケーションをコンテナ化して実行することができるようになることを目標としています。
前半の章では図をふまえながらKubernetesの各リソースについて体系的かつ網羅的に説明します。さらに後半の章では、マニフェスト管理(Helm/Ksonnet)、モニタリング(Prometheus/Datadog)、ログ集約(Fluentd/Datadog)、CI/CD(Spinnaker/JenkinsX/Scaffold)、サービスメッシュ(Istio/Conduit/Linkerd)、Service Brokerなど、Kubernetesを用いてクラウドネイティブな開発を促進させる周辺エコシステムについても紹介します。
書誌情報
- 著者: 青山真也
- 発行日: 2018-09-21 (紙書籍版発行日: 2018-09-21)
- 最終更新日: 2018-09-21
- バージョン: 1.0.0
- ページ数: 544ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
著者について
青山真也
青山 真也(あおやま まさや)[@amsy810]株式会社サイバーエージェント アドテク本部
2016年入社。OpenStackを使ったプライベートクラウドやGKE互換なコンテナプラットフォームをゼロから構築し、国内カンファレンスでのKeynoteに登壇。その後、世界で2番目にCertified Kubernetes Application Developer、138番目にCertified Kubernetes Administratorの認定資格を取得。現在はKubernetesやOpenStackなどOSSへのコントリビュート活動をはじめ、CNCF公式のCloud Native Meetup TokyoのOrganizerやJapan Container Daysの運営などコミュニティ活動にも従事している。
目次
本書について
はじめに
目次
第1章 Dockerの復習と「Hello, Kubernetes」
- 1.1 Dockerの復習
- 1.2 さあ、Kubernetesの世界へ
第2章 なぜKubernetesが必要なのか?
- 2.1 Kubernetesとは/2.2 Kubernetesの歴史
- 2.3 Kubernetesを使うと何ができるのか
- 2.4 はじめてみようKubernetes
- 2.5 まとめ
第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リソース
- 5.1 Workloadsリソースの概要/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章 Discovery&LBリソース
- 6.1 Discovery&LBリソースの概要
- 6.2 KubernetesクラスタのネットワークとService
- 6.3 ClusterIP Service
- 6.4 ExternalIP Service
- 6.5 NodePort Service
- 6.6 LoadBalancer Service
- 6.7 Headless Service(None)
- 6.8 ExternalName Service
- 6.9 None-Selector Service
- 6.10 Ingress
- 6.11 まとめ
第7章 Config&Storageリソース
- 7.1 Config&Storageリソースの概要/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リソースとMetadataリソース
- 8.1 ClusterリソースとMetadataリソースの概要
- 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 高度なスケジューリングとAffinity/Anti-Affinity/12.2 ビルトインノードラベルとラベルの追加
- 12.3 nodeSelector(Simplest Node Affinity)
- 12.4 Node Affinity
- 12.5 matchExpressionsのオペレータとset-based条件
- 12.6 Node Anti-Affinity/12.7 Inter-Pod Affinity
- 12.8 Inter-Pod Anti-Affinity
- 12.9 複数の条件を組み合わせたPodのスケジューリング
- 12.10 TaintsとTolerations
- 12.11 PriorityClassによるPodの優先度と退避
- 12.12 その他のスケジューリング
- 12.13 まとめ
第13章 セキュリティ
- 13.1 ServiceAccount
- 13.2 RBAC(Role Based Access Control)
- 13.3 SecurityContext
- 13.4 PodSecurityContext
- 13.5 PodSecurityPolicy
- 13.6 NetworkPolicy
- 13.7 認証/認可とAdmission Control
- 13.8 PodPreset
- 13.9 まとめ
第14章 マニフェストの汎用化を行うオープンソースソフトウェア
- 14.1 マニフェストの汎用化/14.2 Helm
- 14.3 Ksonnet
- 14.4 Kustomize/14.5 まとめ
第15章 モニタリング
- 15.1 Kubernetesにおける監視/15.2 Datadog
- 15.3 Prometheus
- 15.4 まとめ
第16章 コンテナログの集約
- 16.1 コンテナ上のアプリケーションのログ出力/16.2 Fluentdによるログ集約
- 16.3 Datadog Logsによるログ集約
- 16.4 まとめ
第17章 Kubernetes環境でのCI/CD
- 17.1 Kubernetes環境でのCI/CD/17.2 Spinnaker
- 17.3 Skaffold
- 17.4 Jenkins X
- 17.5 GitOps
- 17.6 その他のCI/CD関連のツール
- 17.7 まとめ
第18章 マイクロサービスアーキテクチャとサービスメッシュ
- 18.1 マイクロサービスアーキテクチャとは
- 18.2 サービスメッシュとは
- 18.3 Linkerd
- 18.4 Conduit(Linkerd v2)
- 18.5 Istio
- 18.6 まとめ
第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 kube-dns(CoreDNS)/19.9 その他のコンポーネントとクラスタのチェック
- 19.10 CustomResourceDefinitionとOperator
- 19.11 まとめ
第20章 Kubernetesとこれから
- 20.1 Kubernetesを取り巻く標準化
- 20.2 Kubernetesとエコシステム
- 20.3 まとめ
付録A 巻末付録
- A.1 kubectl使用時におけるリソースの省略表現
- A.2 よくある質問とその答え