はじめに
Google Cloud Platform内のKubernetes Engineを利用しています。
とある日に『kubectl config view』でkubectlのconfigを見てみると、ものすごいたくさんの情報があり、あれ?クラスタは1つしか利用していないのになんでだろうと思い、色々調べてみた事を忘れない様にメモしておきます。
コンテキストとkubectl config
※100%正しいかは分かっていないのでご注意ください。
kubectlコマンドで命令を出す先のクラスタ名とそのユーザー名やアクセストークンなどの情報の塊がコンテキストと思っています。
なので、クラスタが複数あればコンテキストも複数あるかと思います。
コマンド『kubectl config view』で見れる設定情報は、複数のコンテキストをまとめて確認する方法かと思われます。
コマンド『kubectl config view』は実行する度に複数あるコンテキストをその都度読み込んで表示しているかと思いきや違ったんです。
GCPウェブコンソールでクラスタを削除してから『kubectl config view』を再確認したところ、削除したはずのクラスタ名とそのユーザー名などが表示されました。
なので、GCPウェブコンソールでクラスタを削除したらkubectl config内も別で整理・削除しないといけないみたいです。
コンテキストとkubectl configの確認
コンテキストの確認
[root@sv01 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* gke_proj-honban_asia-northeast1-a_testcluster1124-03 gke_proj-honban_asia-northeast1-a_testcluster1124-03 gke_proj-honban_asia-northeast1-a_testcluster1124-03
gke_proj-honban_asia-northeast1_honban1 gke_proj-honban_asia-northeast1_honban1 gke_proj-honban_asia-northeast1_honban1
現在クラスタ2つあるので、接続情報であるコンテキストも2行表示されました。
kubectl configの確認
この2つのコンテキストをまとめてあるkubectl configを確認してみます。
[root@sv01 ~]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://34.84.44.100
name: gke_proj-honban_asia-northeast1-a_testcluster1124-03
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://34.146.55.99
name: gke_proj-honban_asia-northeast1_honban1
contexts:
- context:
cluster: gke_proj-honban_asia-northeast1-a_testcluster1124-03
user: gke_proj-honban_asia-northeast1-a_testcluster1124-03
name: gke_proj-honban_asia-northeast1-a_testcluster1124-03
- context:
cluster: gke_proj-honban_asia-northeast1_honban1
user: gke_proj-honban_asia-northeast1_honban1
name: gke_proj-honban_asia-northeast1_honban1
current-context: gke_proj-honban_asia-northeast1-a_testcluster1124-03
kind: Config
preferences: {}
users:
- name: gke_proj-honban_asia-northeast1-a_testcluster1124-03
user:
auth-provider:
config:
cmd-args: config config-helper --format=json
cmd-path: /usr/lib64/google-cloud-sdk/bin/gcloud
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp
- name: gke_proj-honban_asia-northeast1_honban1
user:
auth-provider:
config:
access-token: ya29.c.aaaaaaaaaaaaaaaaaaaaaaaaaaausLdKGC93UcUseKXt_x6TRE0MjviG4LXILvLErq8Jyqfsig7f1zDIcurWaIZ7ToN7ct06Ud2bcnzRpbbbbbbbbbbbbbbbbbbbbbbbbbbbtGV9JgPELNamU2hJ9AouxiGww4LAzEeCyBbQ3Ul8NJ5FGEa3RCYvWZQjBSw5bTzdh1eh87wnB_PHugQ..............................................................................................................................
cmd-args: config config-helper --format=json
cmd-path: /usr/lib64/google-cloud-sdk/bin/gcloud
expiry: "2022-11-24T07:55:27Z"
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp
という感じで、2つのコンテキスト情報をまとめて表示されています。
クラスタ削除してから再確認
クラスタ削除
テストで作成して不要になったクラスタ『testcluster1124-03』をGCPウェブコンソールで削除します。
削除方法は省きます。
コンテキストの再確認
[root@sv01 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* gke_proj-honban_asia-northeast1-a_testcluster1124-03 gke_proj-honban_asia-northeast1-a_testcluster1124-03 gke_proj-honban_asia-northeast1-a_testcluster1124-03
gke_proj-honban_asia-northeast1_honban1 gke_proj-honban_asia-northeast1_honban1 gke_proj-honban_asia-northeast1_honban1
削除したクラスタのコンテキストが残っています。
kubectl configの再確認
『kubectl config view』で確認したところ、クラスタ削除前と全く同じままでした。
内容が長いのでここでは省きます。
kubectl config内に残存するクラスタとユーザーも確認
[root@sv01 ~]# kubectl config get-clusters
NAME
gke_proj-honban_asia-northeast1-a_testcluster1124-03
gke_proj-honban_asia-northeast1_honban1
[root@sv01 ~]# kubectl config get-users
NAME
gke_proj-honban_asia-northeast1-a_testcluster1124-03
gke_proj-honban_asia-northeast1_honban1
kubectl config内には両方ともきっちり残っています。
コンテキストの削除
kubectl config内の削除整理
そもそもkubectlで作成したクラスタはkubectlコマンドで削除、ウェブコンソールで作成したクラスタはウェブコンソールで削除と一貫した作業を行えばいいのですが、やっちまったものはしょうがないので削除整理整理していきます。
kubectl config内のクラスタ名を削除
至って簡単なのですが『kubectl config delete-cluster クラスタ名』とするだけ
[root@sv01 ~]# kubectl config delete-cluster gke_proj-honban_asia-northeast1-a_testcluster1124-03
deleted cluster gke_proj-honban_asia-northeast1-a_testcluster1124-03 from /home/cloud_autokeiba_com/.kube/config
kubectl config内のユーザー名を削除
至って簡単なのですが『kubectl config delete-user ユーザー名』とするだけ
[root@sv01 ~]# kubectl config delete-user gke_proj-honban_asia-northeast1-a_testcluster1124-03
deleted user gke_proj-honban_asia-northeast1-a_testcluster1124-03 from /home/cloud_autokeiba_com/.kube/config
あれ?と思いますがクラスタ名もユーザー名も同じ『gke_proj-honban_asia-northeast1-a_testcluster1124-03』です。
kubectl config内のコンテキストを削除
[root@sv01 ~]# kubectl config delete-context gke_proj-honban_asia-northeast1-a_testcluster1124-03
warning: this removed your active context, use "kubectl config use-context" to select a different one
deleted context gke_proj-honban_asia-northeast1-a_testcluster1124-03 from /home/cloud_autokeiba_com/.kube/config
色々削除後にkubectl configを再確認
[root@sv01 ~]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://34.146.55.99
name: gke_proj-honban_asia-northeast1_honban1
contexts:
- context:
cluster: gke_proj-honban_asia-northeast1_honban1
user: gke_proj-honban_asia-northeast1_honban1
name: gke_proj-honban_asia-northeast1_honban1
current-context: gke_proj-honban_asia-northeast1-a_testcluster1124-03
kind: Config
preferences: {}
users:
- name: gke_proj-honban_asia-northeast1_honban1
user:
auth-provider:
config:
access-token: ya29.c.aaaaaaaaaaaaaaaaaaaaaaaaaaausLdKGC93UcUseKXt_x6TRE0MjviG4LXILvLErq8Jyqfsig7f1zDIcurWaIZ7ToN7ct06Ud2bcnzRpbbbbbbbbbbbbbbbbbbbbbbbbbbbtGV9JgPELNamU2hJ9AouxiGww4LAzEeCyBbQ3Ul8NJ5FGEa3RCYvWZQjBSw5bTzdh1eh87wnB_PHugQ..............................................................................................................................
cmd-args: config config-helper --format=json
cmd-path: /usr/lib64/google-cloud-sdk/bin/gcloud
expiry: "2022-11-24T07:55:27Z"
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp
という感じで残したクラスタ『honban1』の情報だけがkubect configに残っていてきれいになりました。
まとめ
前述もしましたが、そもそもkubectlで作成したクラスタはkubectlコマンドで削除、ウェブコンソールで作成したクラスタはウェブコンソールで削除と一貫した作業を行えばこんな事は起こらないんですよね。
クラスタ削除後はコンテキストの選択設定を必ず行って下さい。
残存するコンテキストに自動切替などしてくれません。
コメント