kubectl
コマンドはKubernetesのコマンドラインインターフェイスです。kubectlコマンドの設定は、~/.kube/config
ファイルに設定されています。本記事では複数のKubernetesクラスタへの接続方法を管理するcontextの概要と接続先の切り替え方法を紹介します。
対象読者
- Kubernetesを初めて利用する管理者、開発者
TL;DR
$ kubectl config current-context #現在のコンテキスト $ kubectl config get-contexts #コンテキストの一覧 $ kubectl config use-context <context> #コンテキストの切り替え
目次
contextとは?
contextはクラスタの情報、ユーザ、ネームスペースを組み合わせたものです。この組み合わせで、どのKubernetesクラスタに接続するかが決まります。
- 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コマンドを実行するときに、カレントコンテキストが目的のクラスタであるか、きちんと確認をしてからコマンドを実行するように、日ごろから意識していきたいですね。

投稿者プロフィール
最新の投稿
セキュリティ2021.07.14ゼロデイ攻撃とは
セキュリティ2021.07.14マルウェアとは
WAF2021.07.13クロスサイトスクリプティングとは?
AWS2021.01.21AWS Fault Injection Simulatorが発表されました!