平常使用跳板机来管理, 经常多个环境多套集群, 那么如何用一个kubectl如何管理这些集群.

使用不同的kubeconfig管理

使用不同的Linux用户

每个Linux用户的 ~/.kube/config 配置不同即可, 比如创建一个uat用户,一个prod用户, 分别配置不同的config文件

使用环境变量

config文件放到当前目录下

1
KUBECONFIG=config-uat kubectl get pod

环境变量也可以写成全局的在.bashrc里面

1
export KUBECONFIG=config-uat

使用参数

同使用环境变量

1
kubectl get pod --kubeconfig=config-uat

使用一个kubeconfig

准备

确保每个kubeconfig里面部分参数唯一性,可以手动修改一下

image.png

合并配置文件

假设一个配置文件名为: uat, 另一个为: prod

1
KUBECONFIG=uat:prod kubectl config view --flatten > merged-kubeconfig

验证合并结果

完成合并后,可以使用以下命令验证新的 kubeconfig 文件是否包含了所有的集群、用户和上下文定义, 如果上面没有保证唯一性, 那么合并后的配置就是不完整的.

1
kubectl config view --kubeconfig=merged-kubeconfig

使用配置文件

除了指定配置文件外(如果配置文件放到~/.kube/config内,不需要加–kubeconfig参数)

1
2
3
4
5
# 切换到uat集群, 配置会保存到配置文件(下次默认就是uat集群了)
kubectl config use-context uat --kubeconfig=merged-kubeconfig

# 切换到prod集群
kubectl config use-context prod --kubeconfig=merged-kubeconfig