使用kubeSphere管理多集群

多集群管理最常见的使用场景包括服务流量负载均衡、隔离开发和生产环境、解耦数据处理和数据存储、跨云备份和灾难恢复、灵活分配计算资源、跨区域服务的低延迟访问以及避免厂商锁定等。

多集群管理方案常见的有Kubernetes 集群联邦(Kubernetes Cluster Federation),华为的karmada。这里介绍使用KubeSphere 联邦管理多集群。

集群的工作原理

参考官方文档:https://kubesphere.io/zh/docs/v3.3/multicluster-management/introduction/kubefed-in-kubesphere/

您需要创建一个主集群。主集群实际上是一个启用了多集群功能的 KubeSphere 集群,您可以使用它提供的控制平面统一管理。成员集群是没有中央控制平面的普通 KubeSphere 集群。也就是说,拥有必要权限的租户(通常是集群管理员)能够通过主集群访问控制平面,管理所有成员集群,例如查看和编辑成员集群上面的资源。反过来,如果您单独访问任意成员集群的 Web 控制台,您将无法查看其他集群的任何资源。

只能有一个主集群存在,而多个成员集群可以同时存在。在多集群架构中,主集群和成员集群之间的网络可以直接连接,或者通过代理连接。成员集群之间的网络可以设置在完全隔离的环境中。

file

启用多集群

环境

主机群:primary:172.16.255.180
成员集群1:member1:172.16.255.181
成员集群2:member2:172.16.255.182

部署集群略。

storageClass使用的是local-path。部署过程略。

file

集群间可以互相通信,所以选择直接连接。KubeSphere 的组件 Tower 用于代理连接。Tower 是一种通过代理在集群间建立网络连接的工具。如果主集群无法直接访问成员集群,您可以暴露主集群的代理服务地址,这样可以让成员集群通过代理连接到主集群。

部署kubesphere

主集群primary

wget https://github.com/kubesphere/ks-installer/releases/download/v3.3.1/kubesphere-installer.yaml
sed -i 's/Always/IfNotPresent/g' kubesphere-installer.yaml
kubectl apply -f kubesphere-installer.yaml
wget https://github.com/kubesphere/ks-installer/releases/download/v3.3.1/cluster-configuration.yaml
sed -i 's/storageClass: ""/storageClass: "fast"/g' cluster-configuration.yaml
# 设置为主机群
sed -i 's/clusterRole: none/clusterRole: host/g' cluster-configuration.yaml
# 设置主机群名称
sed -i '/clusterRole/a\    hostClusterName: primary' cluster-configuration.yaml
kubectl apply -f cluster-configuration.yaml

file

这里只启用了多集群和应用商店的组件,其他都是默认的。后面也可以再启动其他可插拔组件。

成员集群member

主机群部署好后,查看主机群的jwtSecret,这个必须一致,主机群才能管理成员集群。

kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret

file

wget https://github.com/kubesphere/ks-installer/releases/download/v3.3.1/kubesphere-installer.yaml
sed -i 's/Always/IfNotPresent/g' kubesphere-installer.yaml
kubectl apply -f kubesphere-installer.yaml
wget https://github.com/kubesphere/ks-installer/releases/download/v3.3.1/cluster-configuration.yaml
sed -i 's/storageClass: ""/storageClass: "fast"/g' cluster-configuration.yaml
# 设置为成员集群
sed -i 's/clusterRole: none/clusterRole: member/g' cluster-configuration.yaml
# 设置主机群名称
sed -i 's/jwtSecret: ""/jwtSecret: "7PagYXfuwv2FmhIrgrFBjuIZTMblXHLc"/g' cluster-configuration.yaml
kubectl apply -f cluster-configuration.yaml

file

成员集群是没有Tower和kubefed-controller-manager组件的。

导入成员集群

以admin用户登录主机群,点击添加集群。

file

file

获取member集群的kubeconfig

cat $HOME/.kube/config

file

点击创建,集群加入成功。

file

file

查看集群

file

登录member集群的kubesphere,查看集群,可以看到只有自己的集群。

file

移除member集群

点击member集群右侧的三个点,点击移除集群。

file

集群被移除后,集群中原有的资源不会被自动清除。

集群被移除后,集群中原有的多集群配置数据不会被自动清除,卸载 KubeSphere 或删除关联资源时会导致用户数据丢失。

使用如下命令清理:

for ns in $(kubectl get ns --field-selector status.phase!=Terminating -o jsonpath='{.items[*].metadata.name}'); do kubectl label ns $ns kubesphere.io/workspace- && kubectl patch ns $ns --type merge -p '{"metadata":{"ownerReferences":[]}}'; done

也可以使用下面的命令移除不健康的集群:

kubectl delete cluster <cluster name>

集群可见性和授权

在 KubeSphere 中,您可以通过授权将一个集群分配给多个企业空间,让企业空间资源都可以在该集群上运行。同时,一个企业空间也可以关联多个集群。拥有必要权限的企业空间用户可以使用分配给该企业空间的集群来创建多集群项目。

添加用户

file

使用admin用户,添加企业空间

file

使用test用户登录,添加企业空间

file

file

提示未发现可用的集群,需要授权。

file

授权

点击一个集群,查看集群详细信息,选择集群设置,选择集群可见性,编辑可见性。

file

也可以选择公开集群,这样所有平台用户都可以访问该集群,并在该集群上创建和调度资源。

file

file

验证

使用test用户登录查看集群。

file

添加多集群项目

点击企业空间,选择项目,点击多集群项目选项卡,再点击创建。
file

file

在memberjiqu集群中查看nginx ns已创建。
file

创建nginx应用

点击nginx多集群项目,点击工作负载,创建。

file

可以选择部署的集群和副本数。

file

设置镜像。

file

不同集群可以设置不同的容器设置,端口设置和环境变量。

file

点击创建,查看nginx应用。

file

file

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x