背景
假设你有多个集群,平时需要对多个集群运维,那么可以通过
kubectl --kubeconfig=<k8s config文件>来进行多个集群之间的切换,但是这样命令会显示的很长,操作起来很麻烦。
此时可以融合kubeconfig文件通过context来进行多集群之间的切换是很方便的。
kubeconfig 文件可以包含 context 元素,每个 context 都是一个由(集群、命名空间、用户)描述的三元组。您可以使用 kubectl config use-context 去设置当前的 context。命令行工具 kubectl 与当前 context 中指定的集群和命名空间进行通信,并且使用当前 context 中包含的用户凭证。
定义集群、用户和上下文
cluster:你的集群名称
name: 你的集群名称
certificate-authority-data: 证书颁发机构数据
server: apiserver url
user: 管理集群用户名称
client-certificate-data: 连接集群证书
client-key-data: 连接集群密钥
namespace: 默认命名空间
current-context: 设置默认集群
融合kubeconfig文件(将多个集群的kubeconfig合并到同一个文件中)
vim ~/.kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: xxxxxxxx
server:https://xxxxx:6443
name: k8s-cluster1
- cluster:
certificate-authority-data: xxxxxxxx
server:https://xxxxx:6443
name: k8s-cluster2
- cluster:
certificate-authority-data: xxxxxxxx
server:https://xxxxx:6443
name: k8s-cluster3
- cluster:
certificate-authority-data: xxxxxxxx
server:https://xxxxx:6443
name: k8s-cluster4
- cluster:
certificate-authority-data: xxxxxxxx
server:https://xxxxx:6443
name: k8s-cluster5
- cluster:
certificate-authority-data: xxxxxxxx
server:https://xxxxx:6443
name: k8s-cluster6
contexts:
- context:
cluster: k8s-cluster1
namespace: ops
user: k8s-cluster1
name: k8s-cluster1
- context:
cluster: k8s-cluster2
user: k8s-cluster2
name: k8s-cluster2
- context:
cluster: k8s-cluster3
namespace: ops
user: k8s-cluster3
name: k8s-cluster3
- context:
cluster: k8s-cluster4
namespace: ops
user: k8s-cluster4
name: k8s-cluster4
- context:
cluster: k8s-cluster5
namespace: ops
user: k8s-cluster5
name: k8s-cluster5
- context:
cluster: k8s-cluster6
namespace: ops
user: k8s-cluster6
name: k8s-cluster6
current-context: k8s-cluster1
kind: Config
preferences: {}
users:
- name: k8s-cluster1
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxxxx
- name: k8s-cluster2
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxxxx
- name: k8s-cluster3
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxxxx
- name: k8s-cluster4
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxxxx
- name: k8s-cluster5
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxxxx
- name: k8s-cluster6
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxxxx
切换集群操作
# 查看多个 kubeconfig 文件融合的结果
kubectl config view
# 切换集群
kubectl config use-context <kubeconfig中配置的clustername>
# 查看当前集群pod资源
kubectl get pods