2. 配置集群配置文件
任务目标
在多集群环境中,每个集群都有独立的kubeconfig配置。本案例将创建两个模拟集群的kubeconfig文件,并通过KUBECONFIG环境变量合并它们,实现使用kubectl config use-context快速切换集群上下文。
环境准备
需要一台已安装kubectl的Linux/macOS机器。为模拟两个独立集群,我们将使用kubectl config set-cluster等命令生成指向不同API Server地址(无需真实集群)的kubeconfig文件。
实现步骤与代码
以下命令创建两个独立的kubeconfig文件,分别代表cluster-a(生产环境)和cluster-b(开发环境),并设置对应的用户与上下文。
合并后的config-merged文件包含两个集群的全部信息。为便于日常使用,将其设为默认配置:
验证方法
执行以下命令验证上下文切换是否生效:
```bash # 查看当前所有可用上下文 kubectl config get-contexts # 切换到 cluster-a 的上下文 kubectl config use-context ctx-a kubectl config current-context # 预期输出: ctx-a # 切换到 cluster-b 的上下文 kubectl config use-context ctx-b kubectl config current-context # 预期输出: ctx-b # 验证当前上下文对应的集群服务器地址 kubectl config view --minify -o jsonpath='{.clusters[].cluster.server}' ```通过条件:
kubectl config get-contexts能同时列出ctx-a和ctx-b两个上下文;- 执行
use-context后,current-context输出与切换目标一致; - 最后一条命令输出的服务器地址与当前上下文对应(ctx-a输出
https://api.cluster-a.example.com:6443,ctx-b输出https://api.cluster-b.example.com:6443)。
常见问题
- 证书路径不存在:本案例仅为演示配置结构,API Server地址与证书均为模拟值。实际环境中应替换为真实集群的CA证书路径或使用
--insecure-skip-tls-verify=true(仅测试环境)。 - 合并后上下文丢失:若使用
KUBECONFIG环境变量直接指向多个文件(不执行--flatten),kubectl仍可读取全部上下文,但部分旧版本工具可能不支持。建议始终使用--flatten生成单一合并文件。