前書き
第1章 はじめに
第2章 kubectlの基本
第3章 リソースを操作する
第4章 定義ファイルに関するコマンド
第5章 Podやコンテナを操作する
第6章 複数のPodを作るリソースに対するコマンド
第7章 ロールアウトに関するコマンド(rollout)
第8章 スケールイン・スケールアウトに関するコマンド
第9章 Serviceに関するコマンド
第10章 ConfigMapに関するコマンド
第11章 Nodeに関するコマンド
第12章 認証・認可に関するコマンド
第13章 クラスタに関するコマンド
第14章 configに関するコマンド
第15章 その他
付録A 利用例:Podが起動しない理由を調べる
付録B kustomizeを活用する
付録C Kubernetesのリソース定義の調べ方
kubectlとは、KubernetesクラスタのAPIを操作するためのコマンドラインツールのことです。公式のツールということもあり、クラスタを利用する場合には、もっとも使われるツールだといえます。本書では、このkubectlの中から利用頻度の高いコマンドやオプション、関連する情報の解説など、やりたいことに合わせてコマンドを選べる形で紹介をしています。そのため、Kubernetesクラスタを利用する際に、便利に使える本になっています。
なお、図中のKubernetesに関連したアイコンは、CC-BY-4.0でライセンスされているものを利用しています12。
この章では、本書の構成とkubectlのセットアップについて説明します。なお、Kubernetesクラスタの構築については、本書の範囲を超えるため取り扱いません。
Kubenertesクラスタには、さまざまな操作のためにAPIを提供しているサーバが存在しています。このサーバが提供するAPI経由で、Nodeの取得やPodの作成など、さまざまな操作が行えます。APIサーバはREST APIを提供しているため、curlやwgetなどで操作することもできますが、kubectlはコマンドライン経由でよりAPIを扱いやすくしてくれます。そのため、ユーザーは図1.1のように、kubectl経由でAPIを簡単に操作できるようになります。
本書では、最初の4章までに、Kubernetesの一般的なリソースに適応できるコマンドを紹介します。残りの章では、各リソースに特化した説明や、リソース特有のコマンドを紹介します。また、目次を利用して、やりたいことからコマンドを探せるようになっています。
kubectlではリソースの操作に複数のやり方がありますが、本書ではそのすべてを紹介しません。特にリソースの作成・変更に関しては、Infrastructure as Codeの観点から、基本的に定義ファイル(第4章「定義ファイルに関するコマンド」)による方法を紹介します。それ以外のものは、参考として軽く紹介するにとどめます。
kubectlはCLIツールのため、作業をするコンピュータにインストールする必要があります。kubectlは単一のバイナリで実行可能な形式で配布されているため、ファイルを取得してパスを通す、もしくはパッケージマネージャーを利用してインストールします。なお、本書では執筆時の最新版であるv1.18.2を利用しますが、後続のバージョンで大きな差が出ることは、ほとんどないと思われます。
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
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