コンテキストとネームスペースとクラスターの違い
クラスターについてはおそらく説明は不要かと思います。ネームスペースもまだわかります。が、そうするといよいよコンテキストってなんだよ?ってなりません?僕はなりました。今回はその説明をしたいと思います。
クラスター
最も理解しやすい概念だと思います。複数のNodeから成り立っており、Nodeが物理的に分かれていることで信頼性冗長性を高めます。
ネームスペース
クラスターを論理的に複数のクラスタに分割するものです。簡単な使い方として「開発環境→ステージング環境→本番環境」みたいに切り替える使い方があります。
コンテキスト
クラスターとネームスペースをセットにしてユーザーと紐づけるものです。こうすることで、指定のクラスタの決まったネームスペースに簡単に移動できます。
kubectx/kubens
が、仮ににクラスターがA~Dまであって、それぞれnamespace1~namespace5まであるとすると、コンテキストは
clusterA-name1
clusterA-name2
clusterA-name3
clusterA-name4
clusterA-name5
clusterB-name1
clusterB-name2
clusterB-name3
clusterB-name4
clusterB-name5
clusterC-name1
clusterC-name2
clusterC-name3
clusterC-name4
clusterC-name5
clusterD-name1
clusterD-name2
clusterD-name3
clusterD-name4
clusterD-name5
みたいなことになります。それならクラスタ名とネームスペースをその都度サクッと指定できた方が楽ですよね。なのでkubectx/kubensをつかってコンテキストにクラスタ名だけ設定してあげれば(たぶんできる)
# コンテキスト(クラスタ)の切り替え
$ kubectx clusterA
Switched to context "clusterA".
# ネームスペースの切り替え
$ kubens namespace1
Context "clusterA" is modified.
Active Namespace is "namespace1".
の様になって使いやすいかと思います。