Kubernetes の操作ツール kubectl と Context

Kubernetes の操作ツール kubectl と Context

Kubernetes は kubectl コマンド ライン ツールを使って操作します。kubectl コマンドで Kubernetes の API サーバーを介してクラスターに命令を与えます。

kubectl のインストール

Kubernetes クラスターを構成した場合には、マスター ノードに kubectl がインストールされています。それ以外の端末に kubectl をインストールする場合には、次の情報を参考にします。

kubectlのインストールおよびセットアップ | Kubernetes

kubectl の構文

kubectl コマンドは次のような記述方式で実行します。

kubectl [command] [TYPE] [NAME] [flags]
要素説明
command1 つ以上のリソースに対して実行する操作を指定します。get, describe, create, delete
TYPE操作するリソースのタイプを指定します。複数形や省略形での記述も可能です。pod, service, node
NAME操作するリソースの名前を指定します。省略した場合はすべてのリソースが対象となります。sample-pod
flagsオプションのフラグを指定します。-s, -i

Context

Context は、kubectl コマンドで操作するクラスターの接続情報と接続に用いる認証情報の組み合わせです。kubectl では kubeconfig に記載された Context を用いて接続先のクラスターを判別します。

kubeconfig は次の優先順位で参照します。何も指定がない場合は既定のファイルとなります。

  1. –kubeconfig で指定したファイル
  2. 環境変数 KUBECONFIG で指定したファイル
  3. $HOME/.kube/config ファイル (既定)

kubeconfig は次のように構成されます。

apiVersion: v1
kind: Config
preferences: {}
# 接続先クラスター情報
clusters:
- cluster:
  name: Lab-kubernetes
  server: https://192.168.11.38:6443
# 認証情報
users:
- name: Lab-kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
# コンテキスト = 接続先クラスターと認証情報の組み合わせ
contexts:
- name: Lab-kubernetes
  context:
    cluster: Lab-kubernetes
    user: Lab-kubernetes-admin
# 利用するコンテキストの指定
current-context: Lab-kubernetes

クラスター情報、認証情報、コンテキストはそれぞれ複数記述することができ、利用するコンテキストは current-context で指定します。

kubeconfig の表示

kubeconfig の情報は次のコマンドで表示できます。

kubectl config view

また、--minify オプションを付与すると現在のコンテキストの情報のみ表示できます。

kubectl config view --minify

Context の一覧表示

Context の一覧は次のコマンドで表示できます。

kubectl config get-contexts

現在の Context の表示

現在の Context は次のコマンドで表示できます。

kubectl config current-contexts

Context の切り替え

Context の切り替えは次のコマンドで実行できます。

kubectl config use-contexts [コンテキスト名]

kubeconfig の定義追加

kubeconfig の定義はそれぞれ次のようなコマンドで追加できます。

kubectl config set-cluster [クラスター名] --server=https://[サーバー IP アドレス or FQDN]:[ポート番号]
kubectl config set-credentials [認証情報名] --client-certificate=[クライアント証明書のパス] --client-key=[クライアント証明書キーのパス]  --embed-certs=true
kubectl config set-contexts [コンテキスト名] --cluster=[クラスター名] --user=[認証情報名] --namespace=[名前空間名]