[Kubernetes入門] kubectlのアクセス先(コンテキスト)を切り替える方法

kubectlコマンドはKubernetesのコマンドラインインターフェイスです。kubectlコマンドの設定は、~/.kube/configファイルに設定されています。本記事では複数のKubernetesクラスタへの接続方法を管理するcontextの概要と接続先の切り替え方法を紹介します。

対象読者

  • Kubernetesを初めて利用する管理者、開発者

TL;DR

$ kubectl config current-context        #現在のコンテキスト
$ kubectl config get-contexts           #コンテキストの一覧
$ kubectl config use-context <context>  #コンテキストの切り替え

目次

  1. contextとは?
  2. 現在のコンテキストを調べる方法は?
  3. コンテキストの一覧を表示する方法は?
  4. コンテキストを切り替えるには?
  5. コンテキストを削除するには?
  6. さいごに

contextとは?

contextはクラスタの情報、ユーザ、ネームスペースを組み合わせたものです。この組み合わせで、どのKubernetesクラスタに接続するかが決まります。

kubernetes_context

  • contextにはcluster、user、namespaceの3つのパラメータがあります。
  • contextにはclusterとuserが含まれている必要があります。
  • clusterとuserは、すべてのcontextで共有されているので、すべてのcontextで利用することができます。
  • clusterとuserのペアで接続先のKubernetesクラスタが決まります。
  • namespaceはデフォルトのネームスペースを指定します。オプション設定なので、ネームスペースを変更する必要があるときだけ設定します。
  • kubectlコマンドでコンテキストを指定しなかった場合、カレントコンテキストが接続先になります。

現在のコンテキストを調べる方法は?

現在のkubectlの接続先(カレントコンテキスト)を調べるには、kubectl config current-contextコマンドを使います。

$ kubectl config current-context
gke_easydoggie_us-west1-c_easydoggie

表示された結果が、現在のコンテキスト名になります。

コンテキストの一覧を表示する方法は?

コンテキストの一覧を表示するにはkubectl config get-contextsコマンドを使います。

$ kubectl config get-contexts
CURRENT   NAME                                   CLUSTER                                AUTHINFO                               NAMESPACE
          docker-for-desktop                     docker-for-desktop-cluster             docker-for-desktop
*         gke_easydoggie_us-west1-c_easydoggie   gke_easydoggie_us-west1-c_easydoggie   gke_easydoggie_us-west1-c_easydoggie

*があるコンテキストが、カレントコンテキスト(現在のコンテキスト)になります。

コンテキストを切り替えるには?

コンテキストを切り替えるにはkubectl config use-context <context>コマンドを使います。

$ kubectl config use-context docker-for-desktop
Switched to context "docker-for-desktop".

kubectlコマンドの--contextオプションを利用することで、コマンドの実行ごとにコンテキストを切り替えることもできます。

コンテキストを削除するには?

コンテキストを削除するには、kubectl config delete-context <context>コマンドを使います。

$ kubectl config delete-context gke_easydoggie_us-west1-c_easydoggie
deleted context gke_easydoggie_us-west1-c_easydoggie from /home/maint/.kube/config

さいごに

本記事ではkubectlのコンテキストの切り替え方法を紹介しました。

GKEのgcloudコマンドでKubernetesクラスタを作成した場合など、自動的にkuectlのカレントコンテキストが作成したクラスタに切り替わります。複数のKubernetesクラスタを利用している場合、いつの間にかコンテキストが切り替わっている可能性もあります。kubectlコマンドを実行するときに、カレントコンテキストが目的のクラスタであるか、きちんと確認をしてからコマンドを実行するように、日ごろから意識していきたいですね。

EasyDoggie

投稿者プロフィール

石川 淳
スカイアーチネットワークスで、新しいサービスの企画を行っています。
元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。
https://github.com/easydoggie
コメントを頂けると嬉しいです。

ABOUTこの記事をかいた人

スカイアーチネットワークスで、新しいサービスの企画を行っています。 元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。 https://github.com/easydoggie コメントを頂けると嬉しいです。