Kubeconfig

Kubernetes的kubeconfig配置文件用于使用kubectl CLI,并允许您通过kubeconfig配置文件远程连接,控制群集。kubeconfig配置文件是存储在每个群集的kubectl-configs中。

基本用法

要将kubectl与没有任何配置的集群一起使用,只需使用--kubeconfig选项。

1
kubectl --kubeconfig kubectl-configs/<config-file> get pods

高级用法

为每个命令手动指定配置文件可能会有的麻烦。

可以将KUBECONFIG环境变量设置为以下格式的配置文件列表:config-1:config-2:config-3

现在,所有文件都已合并,您可以通过上下文在它们之间切换。 例如:

1
2
3
4
5
6
7
8
# 显示当前使用的context
kubectl config current-context
# 比如切换到使用aliyun-k8s,就会本地kubectl cli连接到aliyun-k8s集群
kubectl config use-context aliyun-k8s
# 显示aliyun-k8s集群的pods
kubectl get pods

更多命令可以通过kubectl config --help 查看。

通常情况下,我们本地开发机器会搭建kubernets,同时本地的测试机器环境也会搭建kubernets,线上也会搭建很多个kubernets集群环境。

因为kubernets去读取context的时候,如果设置了全局环境变量KUBECONFIG,他就会优先使用这个全局环境变量对应的配置文件,如果没有设置就会去找$HOME/.kube/config 这个配置文件。

如果需要在本地管理连接这些kubernets,那么可以把对应的kubernets的配置文件:$HOME/.kube/config 导出来,下载导本地,再跟本地的配置文件合并。

以本地测试机器为例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#登录到测试机器,导出配置文件
kubectl config view --raw > office-test.conf
# 下载office-test.conf到本地电脑,然后修改环境变量配置文件,比如:vim ~/.bash_profile
export KUBECONFIG=/Users/xx/.kube/office-test.conf:/Users/xx/.kube/config
# 更新环境变量文件
source ~/.bash_profile
# 新开一个命令行终端,执行导入合并文件
kubectl config view --raw > combined.conf
# 注释掉KUBECONFIG这个环境变量并source更新,然后再把combined.conf复制到$HOME/.kube/config`
#可以看到最新的合并了的contexts
kubectl config get-contexts
#切换context为 office-test
kubectl config set-context office-test
#获取对应的pods,校验是否切换连接成功
kubectl get pods