Administrator
Administrator
发布于 2025-06-04 / 18 阅读
0
0

Kubernetes多集群管理

背景:
我们通过会有多个k8s集群,例如集群(cn-k8s)和集群(jp-k8s),那个就需要有一台服务器可以同时访问两个集群,方式:将2个集群的config信息存放到一个文件中,通过使用 kubectl config use-context context_name 来访问集群。简而言之,通过设置context来让kubectl访问不同的k8s集群。

步骤1:准备多个集群的config文件

注意:若集群的user和name的值相同,需要更改为不一致的值才可以。不然会报错:error: You must be logged in to the server (Unauthorized)

假如已经准备好2个集群的配置文件,分别为 $HOME/.kube/config1 和 $HOME/.kube/config2 
#集群1的config文件
[root@k8s-master1-60 ~]# cat .kube/config1
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: xxxxxx
    server: https://172.30.42.68:8443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: xxxxxx
    client-key-data: xxxxxx

#集群2的config文件
[root@k8s-master1-60 ~]# cat .kube/config2
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: xxxxxx
    server: https://172.30.42.5:6443
  name: cluster.local
contexts:
- context:
    cluster: kubernetes-admin
    user: kubernetes-admin
  name: kubernetes-admin@cluster.local
current-context: kubernetes-admin@cluster.local
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: xxxxxx
    client-key-data: xxxxxx

步骤2:合并config文件

[root@k8s-master1-60 ~]# export KUBECONFIG=~/.kube/config1:~/.kube/config2
[root@k8s-master1-60 ~]# kubectl config view --flatten > /root/.kube/config

测试:

#查看配置
[root@k8s-master1-60 ~]# kubectl config view

#查看当前的上下文 看*号进行辨别
[root@k8s-master1-60 ~]# kubectl config get-contexts 
CURRENT   NAME                             CLUSTER         AUTHINFO              NAMESPACE
          kubernetes-admin@cluster.local   cluster.local   kubernetes-admin-hz   
*         kubernetes-admin@kubernetes      kubernetes      kubernetes-admin

#或者使用以下这条命令
[root@k8s-master1-60 ~]# kubectl config current-context 
kubernetes-admin@kubernetes
[root@k8s-master1-60 ~]# kubectl get node
NAME             STATUS   ROLES    AGE   VERSION
k8s-master1-60   Ready    <none>   42d   v1.30.2
k8s-master2-61   Ready    <none>   42d   v1.30.2
k8s-master3-62   Ready    <none>   42d   v1.30.2
k8s-work1-63     Ready    <none>   42d   v1.30.2
k8s-work2-64     Ready    <none>   42d   v1.30.2

#切换集群上下文
[root@k8s-master1-60 ~]# kubectl config use-context kubernetes-admin@cluster.local 
Switched to context "kubernetes-admin@cluster.local".
[root@k8s-master1-60 ~]# kubectl get node
NAME     STATUS                     ROLES                  AGE    VERSION
master   Ready,SchedulingDisabled   control-plane,master   315d   v1.22.12
node01   Ready                      worker                 315d   v1.22.12
node02   Ready                      worker                 315d   v1.22.12
node03   Ready                      worker                 315d   v1.22.12
node04   Ready                      worker                 315d   v1.22.12
node05   Ready                      worker                 315d   v1.22.12
node06   Ready                      worker                 315d   v1.22.12
node07   Ready                      worker                 315d   v1.22.12

# 查看当前使用的集群

# 修改当前使用的集群


评论