目次

前書き

第1章 はじめに

1.1 kubectlの概要
1.2 この本の構成
1.3 kubectlのセットアップ

第2章 kubectlの基本

2.1 kubectlのコマンド仕様
2.2 簡単な例
2.3 コマンド一覧
2.4 共通オプション
2.5 出力オプション

第3章 リソースを操作する

3.1 リソースとはなにか
3.2 リソースを表示する(get)
3.3 リソースを作成する(create)
3.4 リソースの一部を更新する(set)
3.5 ラベルを変更する(label)
3.6 アノテーションを付ける(annotate)
3.7 リソースを削除する
3.8 リソースの詳細情報を表示する(describe)
3.9 リソースが特定の状態になるまで待つ(wait)
3.10 クラスタで使えるリソースや短縮表記を表示する(api-resources)

第4章 定義ファイルに関するコマンド

4.1 Kubernetesの定義ファイル
4.2 定義ファイルを用いてリソースを作成・変更する(apply)
4.3 定義ファイルに存在しないリソースを削除する
4.4 クラスタ上のリソースの定義を編集する(edit)
4.5 定義ファイルを用いてリソースを削除する(delete)
4.6 リソースから定義ファイルを作る
4.7 クラスタ上の定義と比較する(diff)
4.8 クラスタ上のリソース定義の一部を変更する(patch)
4.9 リソースを置き換える(replace)

第5章 Podやコンテナを操作する

5.1 Podを作る
5.2 起動しているプロセスにアタッチする(attach)
5.3 Pod内のコンテナでコマンドを実行する(exec)
5.4 ファイルの送受信を行う(cp)
5.5 ログを表示する(logs)
5.6 Portを手元のマシンと繋げる(port-forward)
5.7 CPU/メモリの状態を表示する(Top)
5.8 Podを削除する(delete)
5.9 デバッグ用のコンテナをPodに追加する(debug)

第6章 複数のPodを作るリソースに対するコマンド

6.1 定義ファイルからリソースを作成・更新する(apply)
6.2 CLIからリソースを作る(create)
6.3 削除する(delete)
6.4 起動したPodにコマンドを実行する

第7章 ロールアウトに関するコマンド(rollout)

7.1 配下のPodをすべて再起動する(restart)
7.2 状態の確認をする(status)
7.3 履歴を確認する(history)
7.4 ロールアウトを一時停止する(pause)
7.5 ロールアウトを再開する(resume)
7.6 ロールバックする(undo)

第8章 スケールイン・スケールアウトに関するコマンド

8.1 起動するPodの数を変更する
8.2 水平オートスケーリングを設定する

第9章 Serviceに関するコマンド

9.1 定義ファイルからServiceを作成・更新する(apply)
9.2 CLIからServiceを作る(expose)

第10章 ConfigMapに関するコマンド

10.1 定義ファイルから作成・更新する(apply)
10.2 ファイルから作成する(create)

第11章 Nodeに関するコマンド

11.1 Nodeを取得する(get)
11.2 NodeでのPodの新規実行を止める(cordon)
11.3 Nodeで動いているPodをすべて消す(drain)
11.4 NodeでPodを起動できるようにする(uncordon)
11.5 CPU/メモリ/ストレージの状態を表示する(top)
11.6 指定したPod以外を配置できなくする(taint)

第12章 認証・認可に関するコマンド

12.1 証明書署名要求を承認・否認する(certificate)
12.2 Role/ClusterRoleを作成・設定する
12.3 コマンドやリソースに対してアクセス可能か調べる(can-i)

第13章 クラスタに関するコマンド

13.1 クラスタやkubectlのバージョンを確認する(version)
13.2 クラスタの情報を確認する(cluster-info)
13.3 クラスタの詳細情報を保存する(dump)
13.4 APIサーバへのproxyを建てる(proxy)

第14章 configに関するコマンド

14.1 現在のコンテキストを確認する(current-context)
14.2 コンテキストを表示する(get-contexts)
14.3 現在のコンテキストを変更する(use-context)
14.4 利用するconfigファイルを変更する
14.5 configファイルを表示する(view)
14.6 クラスタをすべて表示する(get-clusters)
14.7 クラスタを登録する(set-cluster)
14.8 クラスタの情報を削除する(delete-cluster)
14.9 認証情報を設定する(set-credentials)
14.10 コンテキストを登録する(set-context)
14.11 コンテキストの名前を変更する(rename-context)
14.12 コンテキストを削除する(delete-context)
14.13 任意の値を登録・変更する(set)
14.14 任意の値を削除する(unset)

第15章 その他

15.1 シェルでの補完を有効にする(completion)
15.2 kustomizeを利用する(kustomize)
15.3 プラグイン一覧を表示する(plugin list)
15.4 本書では取り扱わないコマンド

付録A 利用例:Podが起動しない理由を調べる

付録B kustomizeを活用する

B.1 kustomizeでConfigMapを設定する
B.2 環境によって値を変更する

付録C Kubernetesのリソース定義の調べ方

前書き

 kubectlとは、KubernetesクラスタのAPIを操作するためのコマンドラインツールのことです。公式のツールということもあり、クラスタを利用する場合には、もっとも使われるツールだといえます。本書では、このkubectlの中から利用頻度の高いコマンドやオプション、関連する情報の解説など、やりたいことに合わせてコマンドを選べる形で紹介をしています。そのため、Kubernetesクラスタを利用する際に、便利に使える本になっています。

 なお、図中のKubernetesに関連したアイコンは、CC-BY-4.0でライセンスされているものを利用しています12

1. https://github.com/kubernetes/kubernetes/tree/master/logo

2. https://github.com/kubernetes/community/tree/master/icons

第1章 はじめに

 この章では、本書の構成とkubectlのセットアップについて説明します。なお、Kubernetesクラスタの構築については、本書の範囲を超えるため取り扱いません。

1.1 kubectlの概要

 Kubenertesクラスタには、さまざまな操作のためにAPIを提供しているサーバが存在しています。このサーバが提供するAPI経由で、Nodeの取得やPodの作成など、さまざまな操作が行えます。APIサーバはREST APIを提供しているため、curlやwgetなどで操作することもできますが、kubectlはコマンドライン経由でよりAPIを扱いやすくしてくれます。そのため、ユーザーは図1.1のように、kubectl経由でAPIを簡単に操作できるようになります。

図1.1: kubectlの概要

1.2 この本の構成

 本書では、最初の4章までに、Kubernetesの一般的なリソースに適応できるコマンドを紹介します。残りの章では、各リソースに特化した説明や、リソース特有のコマンドを紹介します。また、目次を利用して、やりたいことからコマンドを探せるようになっています。

 kubectlではリソースの操作に複数のやり方がありますが、本書ではそのすべてを紹介しません。特にリソースの作成・変更に関しては、Infrastructure as Codeの観点から、基本的に定義ファイル(第4章「定義ファイルに関するコマンド」)による方法を紹介します。それ以外のものは、参考として軽く紹介するにとどめます。

1.3 kubectlのセットアップ

 kubectlはCLIツールのため、作業をするコンピュータにインストールする必要があります。kubectlは単一のバイナリで実行可能な形式で配布されているため、ファイルを取得してパスを通す、もしくはパッケージマネージャーを利用してインストールします。なお、本書では執筆時の最新版であるv1.18.2を利用しますが、後続のバージョンで大きな差が出ることは、ほとんどないと思われます。

1.3.1 バイナリファイルを直接取得する

 Linuxでは、次のコマンドで最新のバージョンを取得できます。

$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl \

  -s https://storage.googleapis.com/kubernetes-release/release/stable.txt \

  )/bin/linux/amd64/kubectl

 Macでは、次のコマンドで取得できます。

$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl \

  -s https://storage.googleapis.com/kubernetes-release/release/stable.txt \

  )/bin/darwin/amd64/kubectl

 次のように、直接バージョンを指定することもできます。

$ curl -LO \

  https://storage.googleapis.com/kubernetes-release/release/v1.18.2/ \

    bin/darwin/amd64/kubectl

 取得したファイルに実行権限を与え、PATHの中に移動させることで、インストールが完了します。

$ chmod +x ./kubectl

$ sudo mv ./kubectl /usr/local/bin/kubectl

$ kubectl version

1.3.2 パッケージマネージャーを利用する

 kubectlは各種パッケージマネージャーによるインストールもサポートしています。そのため、apt-getやHomebrew、Snapを用いてインストールできます。

# Linux

$ sudo apt-get update && sudo apt-get install -y apt-transport-https

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg \

   | sudo apt-key add -

$ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" \

   | sudo tee -a /etc/apt/sources.list.d/kubernetes.list

$ sudo apt-get update

$ sudo apt-get install -y kubectl


# Ubuntu

$ snap install kubectl --classic


# Mac

$ brew install kubectl

試し読みはここまでです。
この続きは、製品版でお楽しみください。