• 为什么要配置多集群

隔离性:不同的业务或团队可能需要独立的环境来开发和运行应用,多集群可以提供环境隔离,确保不同业务或团队之间的互不干扰(以本人目前所在团队为例,由于要满足两个不同的公司开发环境,申请了两个阿里云账号,每个公司对应的阿里云账号运行的应用和环境不同,所以就有两个不同的k8s集群来管理应用程序容器的部署、启动、停止和销毁等操作,实现负载均衡等)

可用性:多集群部署可以提高系统的可用性。当某个集群出现故障时,其他集群可以接管服务,确保业务的连续性。

(这里主要列举两个原因,还有其他原因就不一一列出了)

  • 如何配置K8s多集群(这里的config文件即为kubeconfig文件)

1.进入阿里云“容器服务Kubernetes版”,进入一个集群(这里是farm-yak),点击连接信息,按照步骤先安装和设置kubectl

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_txt文件

2.安装完kubectl,配置kubeconfig文件

打开PowerShell命令行,依次执行以下命令:

kubectl version –client检查kubectl是否为自己所需要的版本

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_kubernetes_02

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_txt文件_03

3.进入.kube文件夹里面的config并编辑config文件(注意这里一定是config文件而非config.txt文件,打开编辑时格式是文本格式)

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_kubernetes_04

4.添加K8s集群信息

配置cluster集群:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_阿里云_05

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_阿里云_06

配置context用户名称:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_云计算_07

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_kubernetes_08

配置上下文名称,关联对应用户及集群:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_命令行_09

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_txt文件_10

5.配置完成后保存config文件,执行kubectl cluster-info,检查配置是否妥当(这一步执行后可能会遇到报错显示配置错误,下面会详细介绍)

6.最后,命令行依次执行以下命令切换不同集群:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_txt文件_11

  • 遇到报错如何解决?
  1. 命令行执行查看目前集群命令行,出现current-context is not set报错

先执行kubectl config view --raw检查所有配置的集群信息,

正确的返回信息应如下:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_命令行_12

若显示:

apiVersion: v1

clusters: null

contexts: null

current-context: ""

kind: Config

preferences: {}

users: null

表示config文件配置格式有误导致读取不到config文件,或者电脑根本不存在config文件,这时:

1)查看用户文件夹下的.kube是否存在config文件(而非config.text文件),若不存在可能由于某些原因导致config文件损坏或者被删除,这时需要重新创建kubeconfig文件:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_云计算_13

若显示了Mode、LastWriteTime等信息表示创建成功

然后再打开kubeconfig文件进行编辑保存:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_kubernetes_14

2)若确保kubeconfig文件存在,则一一对应查看格式是否有误

2.执行切换集群命令,出现如下报错:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_kubernetes_15

检查kubeconfig文件的context的name名称是否存在,我这里报错找不到该集群是由于我的config文件里配置的name是kubenetes-admin,而正确的name写法应该是kubenetes-admin-c498f5…,修改过来后再执行切换集群命令应该就没问题了。

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_kubernetes_16

->

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_云计算_17

3.执行kubectl cluster-info命令,检测配置是否有误时出现报错:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_阿里云_18

原因与解决方法与2相似,检查集群名字name是否有误,修改后正确的返回信息会包含url,如下:

helm部署时提示Kubernetes cluster unreachable kubectl cluster-info_命令行_19