代理连接
前提条件
已经安装了至少两个 KubeSphere 集群,如果尚未安装,请参阅在 Linux 上安装或者在 Kubernetes 上安装。
备注
多集群管理要求将 Kubesphere 安装在目标集群上,如果您已经有一个集群,则可以在上面部署 KubeSphere 最小安装,以便可以将其导入到多集群控制台。有关详细信息,请参见 Kubernetes 上的最小 KubeSphere。
代理连接
KubeSphere 的 Tower 组件用于代理连接,它是通过代理在集群之间进行网络连接的工具。具体来说,如果主集群(以下简称 H 集群)无法直接访问成员集群(以下简称 M 集群),则可以暴露 H 集群的代理服务地址,M 集群可以通过这个代理服务地址连接到 H 集群。此方法适用于当 M 集群处于私有环境(例如 IDC)并且 H 集群能够暴露代理服务时,或者当集群分布在不同的云服务提供商之上时。
准备主集群
如果已经安装了独立的 KubeSphere,则可以通过编辑集群配置,将clusterRole
的值设置为host
。您需要稍等几分钟,以使更改生效。
选项 A - 使用 web 控制台:
使用
admin
帐户登录控制台,然后转到集群管理页面上的 CRDs,输入关键字ClusterConfiguration
,然后转到其详细信息页面,编辑ks-installer
的 YAML,方法类似于启用可插拔组件。选项 B - 使用 Kubectl:
kubectl edit cc ks-installer -n kubesphere-system
向下滚动并将clusterRole
的值设置为host
,然后点击更新(如果使用 web 控制台)以使其生效:
multicluster:
clusterRole: host
安装主集群和安装一个普通的 KubeSphere 集群没有太大差别,唯一的区别是在配置文件config-sample.yaml
中设置参数clusterRole
如下:
multicluster:
clusterRole: host
您可以使用 kubectl 来获取安装日志以验证状态。运行以下命令,稍等片刻,如果主集群已准备就绪,您将看到成功的日志返回。
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
设置代理服务地址
安装主集群后,将在kubesphere-system
中创建一个名为 tower 的代理服务,其类型为LoadBalancer
。
如果集群中有可用的 LoadBalancer 插件,则可以看到 tower 服务有相应的EXTERNAL-IP
地址,该地址将由 KubeSphere 自动获取并配置代理服务地址,这意味着您可以跳过设置代理服务地址这一步。执行以下命令确认是否有 LoadBalancer 插件。
kubectl -n kubesphere-system get svc
命令的输出可能如下所示:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tower LoadBalancer 10.233.63.191 139.198.110.23 8080:30721/TCP 16h
备注
通常情况主流公有云厂商会提供负载均衡器解决方案,并且负载均衡器可以自动分配外部 IP。如果您的集群运行在本地环境中,尤其是在裸金属环境中,可以使用 Porter 作为负载均衡器解决方案。
如果在 tower 服务下看不到相应的地址显示出来(EXTERNAL-IP 处于 pending 状态),则需要手动设置代理地址。例如,您有一个可用的公有 IP 地址
139.198.120.120
,并且此 IP 地址的端口8080
被转发到集群的端口30721
。执行以下命令来检查服务。$ kubectl -n kubesphere-system get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tower LoadBalancer 10.233.63.191 <pending> 8080:30721/TCP 16h
将
proxyPublishAddress
的值添加到 ks-installer 的配置文件中,并按如下所示输入公有 IP 地址(此处示例139.198.120.120
)和端口号。选项 A - 使用 web 控制台:
使用
admin
帐户登录控制台,然后进入集群管理页面上的 CRDs,输入关键字ClusterConfiguration
,然后进入其详细信息页面,编辑ks-installer
的 YAML,方法类似于启用可插拔组件。选项 B - 使用 Kubectl:
kubectl -n kubesphere-system edit clusterconfiguration ks-installer
定位到
multicluster
并为proxyPublishAddress
添加新行来定义 IP 地址,以便访问 tower。multicluster:
clusterRole: host
proxyPublishAddress: http://139.198.120.120:8080 # Add this line to set the address to access tower
保存配置并重启
ks-apiserver
。kubectl -n kubesphere-system rollout restart deployment ks-apiserver
准备成员集群
为了在主集群管理成员集群,需要使它们之间的jwtSecret
相同。因此,首先需要通过以下命令从主集群中获取它。
kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret
命令输出可能如下所示:
jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU"
如果已经安装了独立的 KubeSphere,则可以通过编辑集群配置,将clusterRole
的值设置为member
。您需要稍等几分钟,以使更改生效。
选项 A - 使用 web 控制台:
使用
admin
帐户登录控制台,然后进入集群管理页面上的 CRDs,输入关键字 ClusterConfiguration,然后进入其详细信息页面,编辑ks-installer
的 YAML,方法类似于启用可插拔组件。选项 B - 使用 Kubectl:
kubectl edit cc ks-installer -n kubesphere-system
输入上面相应地方显示的jwtSecret
:
authentication:
jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU
向下滚动并将clusterRole
的值设置为member
,然后点击更新(如果使用 web 控制台)以使其生效:
multicluster:
clusterRole: member
安装成员集群和安装一个普通的 KubeSphere 集群没有太大差别,唯一的区别在配置文件config-sample.yaml
中设置参数jwtSecret
和clusterRole
如下:
authentication:
jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU
向下滚动并将 clusterRole
的值设置为 member
:
multicluster:
clusterRole: member
导入集群
打开 H 集群仪表板,然后点击添加集群。
输入要导入的集群的基本信息,然后单击下一步。
在连接方法中,选择集群连接代理,然后点击导入。
根据指示在 M 集群中创建一个
agent.yaml
文件,然后将 deployment 复制并粘贴到该文件中,执行kubectl create -f agent.yaml
然后等待代理启动并运行。请确保 M 集群可以访问代理地址。当集群代理启动并运行时,您可以在 H 集群中看到已导入的集群。