我使用了Minikube运行一个本地Kubernetes单节点集群用于开发测试,但是生产环境往往是多个节点组成的集群环境,我经常需要在本地Minikube和在线Kubernetes集群之间切换,后发现可以在kubectl 里可以添加多个环境,总结一下分几点信息:
-
获取配置文件:
首先去到你需要添加的集群master节点上,获取集群的配置文件,kubectl就是通过这个文件来访问集群的:
cat ~/.kube/config
内容如下:
将1,2,3的
value部分
反向base64还原,分别按顺序保存为 k8s-cluster.ca
k8s.crt
k8s.key
,三个文件,反向base64的命令如下:
echo '${替换内容}' | base64 -d
另外集群的访问地址,即 server
字段,需要记录一下,后面会用到。
到此为止,准备工作结束。
-
添加集群,用户,上下文:
# 添加集群 集群地址上一步有获取 ,需要指定ca文件,上一步有获取
kubectl config set-cluster only-k8s --server https://192.168.146.150:6444 --certificate-authority=/usr/program/k8s-certs/k8s-cluster.ca
# 添加用户 需要指定crt,key文件,上一步有获取
kubectl config set-credentials kubernetes-admin --client-certificate=/usr/program/k8s-certs/k8s.crt --client-key=/usr/program/k8s-certs/k8s.key
# 指定一个上下文 我这里叫做 fat,随便你叫啥 关联刚才的用户
kubectl config set-context fat --cluster=only-k8s --namespace=default --user=kubernetes-admin
#激活这个上下文
kubectl config use-context fat
到此为止 ok了,试验一下:
[root@localhost k8s-certs]# kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.1", GitCommit:"d647ddbd755faf07169599a625faf302ffc34458", GitTreeState:"clean", BuildDate:"2019-10-02T17:01:15Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.4", GitCommit:"67d2fcf276fcd9cf743ad4be9a9ef5828adc082f", GitTreeState:"clean", BuildDate:"2019-09-18T14:41:55Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
P.S.
kubectl默认配置存储在 ~/.kube/config
中,我指向了默认的路径,你也可以用多个配置文件来分别存储集群信息,然后切换配置文件:
kubectl --kubeconfig=/Users/0neBean/.kube/config config view
网友评论