本文展示如何使用配置文件来配置对多个集群的访问。 在将集群、用户和上下文定义在一个或多个配置文件中之后,用户可以使用kubectl config use-context命令快速地在集群之间进行切换。
准备2个集群的kubeconfig 这里我们准备了2个集群的kubeconfig,分别是腾讯云的tke和eks集群。
1 2 3 [kubeconfig@nwx-gr-node1 .kube]$ ll -rw-rw-r-- 1 kubeconfig kubeconfig 5630 Feb 15 19:06 eks.config -rw-rw-r-- 1 kubeconfig kubeconfig 5620 Feb 15 19:06 tke.config
合并kubeconfig 合并2个集群的kubeconfig到$HOME/.kube/config这个文件,这里kubectl config不指定配置文件,就会默认读取这个文件。
1 2 3 4 5 6 7 [kubeconfig@nwx-gr-node1 .kube]$ KUBECONFIG=new-config1:new-config2 kubectl config view --flatten > $HOME/.kube/config [kubeconfig@nwx-gr-node1 .kube]$ ll total 28 drwxr-x--- 4 kubeconfig kubeconfig 4096 Feb 15 19:19 cache -rw-rw-r-- 1 kubeconfig kubeconfig 7208 Feb 15 19:19 config -rw-rw-r-- 1 kubeconfig kubeconfig 5630 Feb 15 19:06 eks.config -rw-rw-r-- 1 kubeconfig kubeconfig 5620 Feb 15 19:06 tke.config
查看上下文 这里可以分别查看上下文、集群和用户
1 2 3 4 5 6 7 8 9 10 11 [kubeconfig @nwx-gr-node1 .kube ]$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * cls-123456-100011007xxx -context-default cls-123456 100011007xxx cls-456789-100011007xxx -context-default cls-456789 100011007xxx [kubeconfig @nwx-gr-node1 .kube ]$ kubectl config get-clusters NAME cls-123456 cls-456789 [kubeconfig @nwx-gr-node1 .kube ]$ kubectl config get-users NAME 100011007xxx
如果要查看当前上下文可以用这个命令
1 2 [kubeconfig@nwx-gr-node1 .kube ]$ kubectl config current-context cls-123456 -100011007 xxx -context -default
设置上下文 这里我们可以给集群设置默认的命名空间,这样切换的集群,执行kubectl操作就不需要再-n指定命名空间了
1 2 3 4 5 [kubeconfig @nwx-gr-node1 .kube ]$ kubectl config set-context cls-123456-100011007xxx-context-default --namespace=kube-system [kubeconfig @nwx-gr-node1 .kube ]$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * cls-123456-100011007xxx -context-default cls-123456 100011007xxx kube-system cls-456789-100011007xxx -context-default cls-456789 100011007xxx
这里还可以设置cluster,具体可以参考案例说明。
1 2 3 4 5 6 7 8 9 10 11 12 Examples : kubectl config set-cluster e2e --server=https://1.2.3.4 kubectl config set-cluster e2e --embed-certs --certificate-authority=~/.kube/e2e/kubernetes.ca.crt kubectl config set-cluster e2e --insecure-skip-tls-verify=true kubectl config set-cluster e2e --tls-server-name=my-cluster-name
切换上下文 这里我们切换上下文,只需要指定对应的context name进行切换即可。
1 [kubeconfig@nwx-gr-node1 .kube ]$ kubectl config use -context cls-123456 -100011007 xxx -context -default
查看合并后的kubeconfig 1 [kubeconfig@nwx -gr-node1 .kube]$ kubectl config view
删除操作
要删除用户,可以运行 kubectl config unset users.
要删除集群,可以运行 kubectl config unset clusters.
要删除上下文,可以运行 kubectl config unset contexts.
如果要从config文件删除可以用下面命令
删除上下文,kubectl config delete-context minikube
删除集群,kubectl config delete-cluster minikube
删除用户,kubectl config delete-user minikube