Kubernetes 原生提供了 kubeconfig 文件机制,为多集群管理而设计,一起来看看如何使用吧!
- 集群 dev:Kubernetes 1.31.19
- 集群 prod:Kubernetes 1.35
1、理解 kubeconfig
1.1、kubeconfig 文件结构
bash
# kubeconfig 文件包含三个主要部分:集群列表、上下文列表、用户认证信息
apiVersion: v1
kind: Config
clusters: # 集群列表
- name: prod-cluster
cluster:
server: https://api.prod.example.com
certificate-authority-data: <base64-ca-cert>
contexts: # 上下文列表(集群+用户+命名空间)
- name: prod-admin
context:
cluster: prod-cluster
user: admin-user
namespace: default
current-context: prod-admin # 当前使用的上下文
users: # 用户认证信息
- name: admin-user
user:
client-certificate-data: <base64-cert>
client-key-data: <base64-key>
2.1、基本命令
bash
# 查看当前配置
kubectl config view
# 查看原始配置
kubectl config view --raw
# 查看特定上下文配置
kubectl config view --context=prod-cluster
# 列出所有上下文
kubectl config get-contexts
# 切换当前上下文
kubectl config use-context prod-admin
2、使用 kubeconfig
2.1、多集群配置
- 集群 dev:Kubernetes 1.31.19、3节点
- 集群 prod:Kubernetes 1.35、1节点

- 集群 config 文件位于控制节点 ~/.kube/config

2.2、安装 kubectl 命令(可选)
- 当前在集群外节点使用 kubectl 命令,需要单独安装 kubectl
- 具体步骤可见博客:https://blog.csdn.net/mm1234556/article/details/149527870

2.3、拷贝 config 文件
bash
# 拷贝 prod 集群的 config 文件
scp -r root@172.16.12.36:/root/.kube/config ./config_prod
# 拷贝 dev 集群的 config 文件
scp -r root@172.16.15.105:/root/.kube/config ./config_dev

2.4、使用 config 文件连接集群
bash
# dev 集群
kubectl --kubeconfig=config_dev get node
# prod 集群
kubectl --kubeconfig=config_prod get node

2.5、合并 config
- 手动修改 config_dev 和 config_prod 文件
- 修改集群名称、用户信息、上下文内容,不能使用重复名称

- 将 config_dev 和 config_prod 合并为 config_dev_prod 文件,后续仅使用合并的文件连接 dev 和 prod 集群
bash
# windows 环境下命令
set KUBECONFIG=config_dev;config_prod && kubectl config view --merge --flatten > config_dev_prod
# linux 环境下命令
KUBECONFIG=./config1:./config2 kubectl config view --flatten > ./configX
2.6、连接集群
bash
# 查看上下文
kubectl --kubeconfig=config_dev_prod config get-contexts
# 查看当前上下文集群的节点
kubectl --kubeconfig=config_dev_prod get node
# 切换上下文
kubectl --kubeconfig=config_dev_prod config use-context prod
# 查看切换后上下文集群的节点
kubectl --kubeconfig=config_dev_prod get node

