通过kubeconfig配置对多集群的访问

背景

假设你有多个集群,平时需要对多个集群运维,那么可以通过
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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用以下步骤: 1. 确保您的机器上已经安装了 Kubernetes CLI 工具kubectl。 2. 在您的机器上创建两个不同的kubeconfig文件,分别用于连接到不同的 Kubernetes 集群。您可以使用以下命令创建一个 kubeconfig 文件: ``` kubectl config --kubeconfig=<kubeconfig-name> set-cluster <cluster-name> --server=<api-server-url> kubectl config --kubeconfig=<kubeconfig-name> set-credentials <credential-name> --token=<access-token> kubectl config --kubeconfig=<kubeconfig-name> set-context <context-name> --cluster=<cluster-name> --user=<credential-name> kubectl config --kubeconfig=<kubeconfig-name> use-context <context-name> ``` 在上述命令中,您需要替换以下参数: - `<kubeconfig-name>`: 您想要创建的 kubeconfig 文件的名称。 - `<cluster-name>`: 您要连接的 Kubernetes 集群的名称。 - `<api-server-url>`: Kubernetes 集群的 API 服务器的 URL。 - `<credential-name>`: 用于连接到 Kubernetes 集群访问令牌的名称。 - `<access-token>`: 用于连接到 Kubernetes 集群访问令牌。 3. 在您的机器上设置环境变量 `KUBECONFIG`,并将其值设置为包含您创建的两个kubeconfig 文件的目录路径,使用冒号(:)分隔它们。 ``` export KUBECONFIG=/path/to/kubeconfig1:/path/to/kubeconfig2 ``` 4. 确认您已经成功设置环境变量。您可以使用以下命令验证您的配置是否正确: ``` kubectl config get-contexts ``` 您应该看到两个不同的上下文,对应于您之前创建的两个kubeconfig 文件。 5. 现在,您可以使用 `kubectl` 命令来控制不同的 Kubernetes 集群。 在运行 `kubectl` 命令时,使用 `--context` 标志指定要连接的kubeconfig文件的上下文: ``` kubectl --context=<context-name-in-kubeconfig> <command> ``` 在上述命令中,您需要替换以下参数: - `<context-name-in-kubeconfig>`: 在kubeconfig文件中定义的上下文的名称。 - `<command>`: 要执行的kubectl命令。 例如,要在第一个 Kubernetes 集群上运行 `kubectl get pods` 命令,您可以使用以下命令: ``` kubectl --context=<context-name-for-first-cluster-in-kubeconfig> get pods ``` 要在第二个 Kubernetes 集群上运行 `kubectl get pods` 命令,您可以使用以下命令: ``` kubectl --context=<context-name-for-second-cluster-in-kubeconfig> get pods ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不爱吃肉@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值