kubectl操作多个k8s集群的方法:
需要合并 kubeconfig,如下操作就可以了,后面只用一个 --flatten即可,不要 --merge,否则,后面的会覆盖之前的config,血泪教训,因为腾讯的 serveless 文档就是这么操作的,非常坑
[root@k8smaster tmp]# cp ~/.kube/config ~/.kube/config.bak //一定要先备份之前的config,方便还原
[root@k8smaster tmp]# KUBECONFIG=~/.kube/config:/usr/local/k8s_tencent_kubeconfig/cls-m3mx4sot-config kubectl config view --flatten > /tmp/config
[root@k8smaster tmp]# mv /tmp/config ~/.kube/config
[root@k8smaster tmp]# export KUBECONFIG=~/.kube/config
查看集群下所有config的内容:
[root@k8smaster tmp]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://xx.xx.xx.xx:443/
name: cls-m3mx4sot
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://xx.xx.xx.xx:6443
name: kubernetes
contexts:
- context:
cluster: cls-m3mx4sot
user: "100021763219"
name: cls-m3mx4sot-100021763219-context-default
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: cls-m3mx4sot-100021763219-context-default
kind: Config
preferences: {}
users:
- name: "100021763219"
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
[root@k8smaster tmp]#
获取多个集群环境:
[root@k8smaster tmp]# kubectl config get-contexts
[root@k8smaster tmp]# kubectl config current-context
cls-m3mx4sot-100021763219-context-default
[root@k8smaster tmp]#
切换k8s集群环境:
[root@k8smaster tmp]# kubectl config use-context cls-3jju4zdc-context-default
测试以下默认名称空间下的node:
[root@k8smaster tmp]# kubectl get node
实际应用中其实是这么操作的:
kubectl 使用 --kubeconfig 指定 config 文件地址访问不同的集群
比如下面的操作:
[root@k8smaster ~]# kubectl --kubeconfig ~/.kube/config get nodes // ~/.kube/config 为集群配置文件(config文件路劲可以任意定义,这里只是用了默认的路径),这里可能是腾讯云上的 A 集群配置,也可以是腾讯云上的 B 集群配置,也可以是其它的
[root@k8smaster ~]# kubectl --kubeconfig ~/.kube/config apply -f service.yaml // 在指定集群下启动服务
