Kubernetes kubeconfig详解:多集群配置与上下文切换

来自AI助手的总结
介绍kubeconfig单集群、多集群配置及切换访问方法
Kubernetes kubeconfig详解:多集群配置与上下文切换

一、Kubeconfig详解及配置多集群

1.1 单集群配置kubeconfig

单集群配置kubeconfig

[root@k8s-master01 ~]# cat zq-kubeconfig.yaml 
apiVersion: v1
kind: Config
clusters:
- name: default-cluster
  cluster:
    server: https://10.0.0.20:6443
    certificate-authority-data: LS0t...
users:
- name: zq
  user:
    token: eyJh...
contexts:
- name: zq-context
  context:
    cluster: default-cluster
    user: zq
    namespace: default
current-context: zq-context

1.2 多集群配置kubeconfig

多集群配置kubeconfig


apiVersion: v1

kind: Config

# 集群列表(可定义多个集群)

clusters:

- name: default-cluster             # 集群1名称(原集群)

  cluster:

    server: https://10.0.0.20:6443  # 集群1的 API 地址

    certificate-authority-data: LS0t...  # 集群1的 CA 证书

- name: cluster-2                    # 集群2名称(新增集群)

  cluster:

    server: https://10.1.0.10:6443   # 集群2的 API 地址

    certificate-authority-data: LS0t...  # 集群2的 CA 证书(不同集群的 CA 不同!)

# 用户列表(可定义多用户,每个用户对应不同集群的认证)

users:

- name: zq                           # 用户1(原集群的 ServiceAccount)

  user:

    token: eyJhbGci...               # 原集群的 Token

- name: admin-cluster2               # 用户2(集群2的用户,如 kubeconfig 或 ServiceAccount)

  user:

    token: eyJhbGci...               # 集群2的 Token

# 上下文列表(定义集群、用户、命名空间的组合)

contexts:

- name: zq-context                  # 上下文1(原集群)

  context:

    cluster: default-cluster        # 关联集群1

    user: zq                        # 关联用户1

    namespace: default              # 默认命名空间

- name: cluster2-context            # 上下文2(新增集群)

  context:

    cluster: cluster-2              # 关联集群2

    user: admin-cluster2            # 关联用户2

    namespace: kube-system          # 集群2的默认命名空间

# 当前使用的上下文

current-context: zq-context         # 默认使用原集群

1.3 切换到其他集群的三种方式

方式一:通过 kubectl config use-context 切换


# 查看所有上下文

kubectl config get-contexts

# 切换上下文到 cluster2-context

kubectl config use-context cluster2-context

# 验证当前集群

kubectl cluster-info

方式二:通过 --context 参数临时指定


# 不切换默认上下文,临时使用 cluster2-context

kubectl get pods --context=cluster2-context -n kube-system

方式三:直接修改 kubeconfig 文件

编辑 ~/.kube/config 或你的自定义配置文件,修改 current-context 字段:

[root@k8s-master01 ~]# vim zq-kubeconfig.yaml 
...
...
# 手动修改为要切换的上下文名
current-context: cluster2-context  

1.4 跨集群访问的两种典型场景

场景 1:B 集群配置已存在独立文件中

假设 B 集群的配置保存在 b-cluster-config.yaml,直接指定该文件


# 查看 B 集群的 Pod

kubectl get pods --kubeconfig=/path/to/b-cluster-config.yaml

# 操作 B 集群的 Deployment

kubectl get deploy -n kube-system --kubeconfig=/path/to/b-cluster-config.yaml

场景 2:多集群配置在同一个文件中

若已将 A 和 B 集群的配置合并到同一文件(如 ~/.kube/config),可通过 --context 指定 B 集群的上下文:


# 指定上下文(无需 --kubeconfig,默认使用 ~/.kube/config)

kubectl get nodes --context=b-cluster-context

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容