云容器引擎

通过kubectl对接多个集群

2022-08-01 02:56:49

使用场景

客户想使用同一个kubectl客户端工具,通过切换当前用户的方式达到切换集群的效果。

图 kubectl对接多集群示意


配置前提

  • kubectl命令客户端工具所在的ECS云主机,能够curl通集群A和集群B的vip地址+5443端口。

  • 以下配置仅供参考,为了方便,直接在A集群的一个节点作为客户端(节点绑定了EIP)。

  • 为了方便访问,给B集群的VIP地址绑定了公网IP(假设为:1.2.3.4),理论上如果A、B在同一VPC,可以不这样操作。


客户端配置对A的访问

直接参考《CCE用户指南》中的“通过kubectl连接CCE集群”。


客户端上配置对B的访问

我们要用访问B的集群,要知道B的地址,还要带上认证去访问,那么必须要把相应的信息补齐。

步骤如下:

步骤 1录入B集群的集群信息

kubectl config set-cluster cluster-k8s --server=https://1.2.3.4:5443   --insecure-skip-tls-verify=true

--insecure-skip-tls-verify=true这个参数一定要带上,这是忽略校验客户端证书

步骤 2录入去B集群的认证信息

首先在B上操作:

方式一:将B集群的证书传入到客服端使用,在客户端上操作,用户详细信息添加到配置文件中:

kubectl config set-credentials ui-admin --client-certificate=client.crt --embed-certs=true

方式二:在集群B上获取认证token

1.创建一个sa用户

kubectl create  sa  my-sa

2.给sa用户授权

kubectl create clusterrolebinding  myrolebinding --serviceaccount=default:my-sa --clusterrole=cluster-admin

3.获取用户的token

kubectl describe secret my-sa-token-xxx | awk '/token:/{print $2}' > token

将获取的token传入到客户端。

4.客户端上操作,用户详细信息添加到配置文件中:

kubectl config set-credentials ui-admin --token=$token

步骤 3将集群B的上下文详细信息添加到配置文件中

kubectl config set-context ui-admin@cyd --cluster=cluster-k8s --user=ui-admin

此时在客户端上:

Kubectl config use-context  internal  切换到集群A

Kubectl config use-context  ui-admin@cyd 切换到集群B

步骤 4验证配置

其他情况:

如果配置完报X509错误,应该是忘记传入参数 --insecure-skip-tls-verify=true

可在使用时带上该参数即可,例如:kubectl get pod  --insecure-skip-tls-verify=true


BMalhAhUSgm0