ポケットリファレンスシリーズKubernetesポケットリファレンス

[表紙]Kubernetesポケットリファレンス

四六判/416ページ

定価(本体2,980円+税)

ISBN 978-4-297-10957-8

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

コンテナの基盤技術として標準の地位を獲得したKubernetesが,「ポケットリファレンス」シリーズに登場。

近年コンテナ技術への注目が高まり,実プロジェクトへの普及が進んでいます。本書では,Kubernetes初のリファレンス本として,kubectlのコマンドとリソースを網羅的に解説。また,入門者向けのDockerの基本やKubernetesの導入はもちろん,リファレンスだけではカバーできない実践的な使用方法やよくあるエラーとトラブル対処法も押さえました。

さらに,折り込み付録としてKubernetes利用の全体像を俯瞰できる「チートシート」を収録。初心者から上級者まで,Kubernetesを使う開発者にとって必携の1冊です。

こんな方におすすめ

  • これからKubernetesを利用しようとしている初心者
  • Kubernetesを利用している中〜上級者
  • Kubernetesのコマンドやリソースにつまづきがちな方

著者の一言

私は,Kubernetesは嫌いでした。
ちょっとKubernetesを試してみようと思ってもクラスターを構築するのが大変ですし,クラスターでPodが起動できたと思ってもネットワークがつながらないし,ノードに障害が発生するとPod上のデータは消えてしまうし......。
これらは過去の話で,今はGKEやAKSをはじめとしたマネージドサービスで簡単にKubernetesを構築できます。自前で構築する場合でも,いくつかのKubernetesをサポートしたインストーラや,PC 1台でオールインワンで使えるツールが提供されています。インターネットや書籍でたくさんの情報も提供されているので,トラブルで悩むことも,以前に比べれば各段に減ったでしょう。しかしながら,そのたくさんの複雑なリソースを覚えなければならない点や,コマンドラインのkubectlを覚えないといけない課題は,依然として残っています。
本書では,Kubernetes操作の要となるkubectlコマンドとKubernetesのリソースについて,リファレンスとして網羅的に説明しつつ,Kubernetesとその前提となるDockerの基本的な使い方,リファレンスだけではカバーできない実践的な使い方をまとめ,実用的な書籍としまとめました。また,「こうすれば動く」という内容だけでなく,エラーが発生したり,動かなかった場合のトラブルへの対処法なども処方せん的に記載しました。
入門者の方には,Kubernetesの概要をつかみつつ,ハマったときにはトラブルの対処法を見ながらの学習に,中級者くらいの方には,まれにしか使わないコマンド・リソースを確認し思い出す際に,上級者には後輩にKubernetesを教えるために,本書を活用いただければ幸いです。

(著者代表 岡本隆史,本書「はじめに」より)

目次

  • はじめに
  • 本書の使い方

Chapter 1:入門編

コンテナ大航海時代の新常識Kubernetes

  • コンテナ大航海時代の船長Kubernetes

Kubernetesのアーキテクチャ

  • Kubernetesのリソースと動作の概要
  • Kubernetesの動作の仕組み

Dockerの基礎

  • コンテナとは?
  • インストール
  • コンテナの起動
  • イメージのビルド
  • コマンド一覧

Kubernetesの基礎

  • 環境準備
  • コンテナの起動
  • ネットワークの設定
  • ボリューム設定
  • dashboardによるKubernetesの管理

Chapter 2:実践編

コマンドリファレンス

  • kubectlの概要
  • リソースの作成・設定変更を行う kubectl apply
  • リソースをファイルや標準入力から作成する kubectl create
  • ClusterRoleBindingを作成する kubectl create clusterrolebinding
  • Namespaceを作成する kubectl create namespace
  • Quotaを設定する kubectl create quota
  • RoleBindingを作成する kubectl create rolebinding
  • 機密性の高い情報を保持するためのsecretを作成する kubectl create secret
  • Service Accountを作成する kubectl create serviceaccount
  • リソースを削除する kubectl delete
  • リソースの情報を表示する kubectl describe
  • 設定ファイルとリソースの差分を確認する kubectl diff
  • マニフェストをインタラクティブに編集する kubectl edit
  • リソースの説明を表示する kubectl explain
  • リソースの情報を取得する kubectl get
  • kustomizeからマニフェストを生成する kubectl kustomize
  • リソースのフィールドを更新する kubectl patch
  • リソースを置換する kubectl replace
  • Delpoyment・Job・Podを作成する kubectl run
  • すでに存在するアプリケーションリソースを変更する kubectl set
  • 特定の条件を満たすまで待機する kubectl wait
  • Serviceを作成して,外部からのアクセスを受け付ける kubectl expose
  • コンテナへの接続 kubectl port-forward
  • プロキシを介したREST APIアクセス kubectl proxy
  • コンテナへの接続 kubectl attach
  • オートスケールを管理する kubectl autoscale
  • ファイルのコピー kubectl cp
  • コマンドの実行 kubectl exec
  • リソースの情報を表示する kubectl logs
  • リソースのロールアウトを管理する kubectl rollout
  • リソースのサイズを設定する kubectl scale
  • Podまたはノードのリソース利用情報を確認する kubectl top
  • アノテーションを設定する kubectl annotate
  • シェルの補完設定を出力する kubectl completion
  • クラスターの接続設定ファイルの作成・編集を行う kubectl config
  • ラベルを設定する kubectl label
  • TLS証明書を管理する kubectl certificate
  • クラスター情報を表示する kubectl cluster-info
  • ノードへのPodの割り当てを停止・再開する kubectl cordon/drain/uncordon
  • NodeへのPodの割り当てを制御する kubectl taint
  • 権限の確認 kubectl auth can-i
  • プラグインを管理する kubectl plugin

リソースリファレンス

  • Podを作成する Pod
  • Podの実行数を管理する ReplicaSet
  • ReplicaSetのバージョンを管理する Deployment
  • 状態を持つPodを作成する StatefulSet
  • Podをオートスケールする HorizontalPodAutoscaler
  • Podを自動的にスケールアップする VerticalPodAutoscaler
  • Podの最小動作数を定義する PodDisruptionBudget
  • Jobを実行する Job
  • 定期的にJobを実行する CronJob
  • 各ノード上にPodを作成する DaemonSet
  • サービスを公開する Service
  • ホスト名でサービスにアクセスする Ingress
  • ネットワーク接続を制限する NetworkPolicy
  • Podの設定をリソースとして管理する ConfigMap
  • 機密性が高い設定をリソースとして管理する Secret
  • 永続ディスクのリクエストを管理 PersistentVolumeClaim
  • 永続ディスクを作成する PersistentVolume
  • ストレージのクラスを定義する StorageClass
  • Kubernetesクラスター内のリソースを論理的に分離する Namespace
  • コンテナリソースのデフォルト値を設定 LimitRange
  • ネームスペース単位でリソースを制限 ResourceQuota
  • ネームスペース単位で権限を定義する Role
  • Roleとユーザーを紐付ける RoleBinding
  • クラスター単位で権限を定義する ClusterRole
  • ClusterRoleとアカウントを紐付ける ClusterRoleBinding
  • サービスアカウントを管理する ServiceAccount
  • Podのセキュリティを強化する PodSecurityPolicy

Chapter 3:応用編

スマートなコンテナイメージの作成ノウハウ

  • コンテナイメージ作成のプラクティス
  • コンパクトなイメージの作り方
  • マルチステージビルド
  • Dockerfileを作成する際のリファレンス

GitLabによるプライベートレジストリの使い方

  • プロジェクトの作成
  • イメージのプッシュ
  • イメージのプル
  • 登録したイメージをKubernetesで利用する
  • イメージの自動ビルド
  • Kubernetes上へのGitLabの構築

ネームスペースとRBACによるアクセス制御

  • ネームスペースとは
  • RBAC(Role Based Access Control)とは

Helm ChartでKubernetes アプリケーションを楽々管理

  • Helmとは
  • Helmクライアントのインストール
  • Chartのインストールと管理
  • エラーと対処法

Grafana Lokiによるログ管理

  • Lokiの特徴
  • Lokiのアーキテクチャ
  • Lokiのセットアップ
  • sidecarによるファイルのログの転送
  • 参考文献
  • 逆引きリファレンス
  • 索引

Column

  • Kubernetesアーキテクチャの補足
  • Windowsのサポート
  • オンプレミスで使えるKubernetesディストリビューション
  • DNSアドオンのインストール
  • 一般的なKubernetesクラスターへのIngress Controllerのインストール
  • Imperative / Declarative object configuration
  • kubectl createの便利なサブコマンド
  • Helmとkustomizeの違い
  • 証明書ファイルを設定ファイルから取り出す
  • Podのスケジューリングを制御する
  • 占有ノードの扱いを簡単にする
  • kubectlのその他のコマンド
  • ローカルイメージをKubernetesで利用
  • Ingress Nginxの認証追加機能
  • HTTPSのデバッグ
  • PodSecurityPolicyとSecurity Contextの設定値の関係
  • PodSecurityPolicyを有効にする方法
  • マネージドKubernetesでのログの確認
  • KubernetesでCI/CD
  • Istio/Knativeによるマイクロサービス化の実現
  • パラメータファイルの取り出し

著者プロフィール

岡本隆史(おかもとたかし)

Kubespray コントリビュータとして,バグ修正や機能追加を行う。Certificed Kubernetes Administrator/Certificed Kubernetes Application Developer を所持。著書の『改訂新版Gitポケットリファレンス』(技術評論社)と『Android/iPhone/Windows Phone対応 jQuery Mobileスマーフォンアプリ開発』(ソフトバンククリエイティブ)は台湾でも出版されている。最近はマレーシアを拠点としてAPACや欧州など,海外拠点へのKubernetes・CI/CDの技術支援を行っている。


佐藤聖規(さとうまさのり)

テクノロジーと企業や開発者をマッチングして,新しい価値を生み出したり,働き方改革のために活動している。特にアーキテクチャ,DevOpsコンサルティングが得意。著書に『改訂第3版 Jenkins実践入門』(技術評論社),『コンテナ・ベース・オーケストレーション』(翔泳社)。書籍執筆やイベント講演を通じてテクノロジーのことを多くに人に知ってもらえるのが喜び。
Twitter:@lino_s


岩成祐樹(いわなりゆうき)

エンジニアが幸せな世の中を実現すべく,日々奮闘中。現職では,クラウド,コンテナ,DevOpsなど,開発全般の技術支援に従事。最近の注目は,Kubernetes関連の開発ツール,フレームワーク。イベント登壇などの際のユーザーの生の声が心の支え。共著に『改訂第 3 版 Jenkins実践入門』(技術評論社)。
Twitter:@yuki_iwanari


正野勇嗣(しょうのゆうじ)

ソフトウェア開発技術のR&Dに従事するかたわら,開発プロジェクト支援やトラブルシューティングも行う。「いまさら聞けないマイクロサービスの基本」「APIエコノミーの作り方」「Swagger 入 門」「RPA 入 門」「Kubernetes 入 門」(マ イ ナ ビITSearch+)などの執筆活動や,マイクロサービス関連技術を中心とした講演活動を通じてさまざまな人や技術に触れるのが楽しみ。大学非常勤講師も務める。3児のパパ。


村上大河(むらかみたいが)

テクノロジーでみんなを幸せにすることが大好き。現職ではクラウドを使って良いソフトウェアを早くつくるための活動に従事。特にインフラ技術,分散アーキテクチャが得意。最近ではSREやChaos Technologyがお気に入り。仕事の傍ら執筆,講演,大学での講義を行う。趣味は SPARTAN RACEとFX自動売買。
Twitter:@samuraitaiga111