背景及原理
使用场景:当cicd所在的主机,ci部署到生产集群、beta集群及测试集群,那么是否可以通过kubectl配置实现多个集群环境的切换访问呢?
原理:通过将集群、用户和上下文定义(即kubectl访问集群时的config配置文件)在一个或多个配置文件中之后,用户可以使用 kubectl config use-context
命令快速地在集群之间进行切换。
多集群配置方法
-
需要新建.kube文件夹,拷贝不同集群的config配置,例如重命名为config-jhmy和config-ymt,分别查看配置文件。
-
两份配置文件中context、cluster、users名称必须不一样(同集群设置不同环境除外),否则调用将会出错,所以我们可以适当修改配置文件。
# cat config-jhmy
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ***
server: https://192.168.1.1
name: k8s-jhmy #修改名字,确保多个配置文件的名称不一样
contexts:
- context:
cluster: k8s-jhmy
user: k8s-jhmy
name: k8s-jhmy
current-context: k8s-jhmy
kind: Config
preferences: {}
users:
- name: k8s-jhmy
user:
client-certificate-data: ***
# cat config-ymt
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ***
server: https://192.168.2.1
name: k8s-jhmy #修改名字,确保多个配置文件的名称不一样
contexts:
- context:
cluster: k8s-ymt
user: k8s-ymt
name: k8s-ymt
current-context: ymt
kind: Config
preferences: {}
users:
- name: k8s-ymt
user:
client-certificate-data: ***
- 然后执行以下命令生成新的config文件即可
KUBECONFIG=config-ymt:config-jhmy kubectl config view --flatten > ~/.kube/config
- 测试
# 查看当前配置
kubectl config current-context
#切换配置
kubectl config use-context k8s-ymt