多集群Kubernetes:用KubeSphere管理Di

KubeSphere 是一个开源的分布式操作系统,用于管理云原生应用程序。KubeSphere使用Kubernetes作为其内核,为第三方应用程序的无缝集成提供了一个即插即用的架构,以促进其生态系统。KubeSphere可以在任何地方运行,因为它是高度可插拔的,不需要入侵Kubernetes。

KubeSphere的开发是为了解决多集群和多云管理的挑战,并实现收益的用户场景,为用户提供一个统一的控制平面,将应用程序及其副本分配到从公共云到企业内部环境的多个集群。

KubeSphere中的Kubernetes集群联盟

基于Kubernetes集群联盟(简称Kubefed ),KubeSphere实现了多集群管理,允许集群管理员轻松管理跨云提供商的多个Kubernetes集群。

在本教程中,我们在数据中心安装一个主机集群,扮演成员集群的控制平面角色。然后我们使用两个流行的托管Kubernetes服务,DigitalOcean KubernetesAmazon EKS,并将它们导入主机集群。

准备一个主机集群

在你开始之前,你需要安装一个KubeSphere集群,详情请见快速入门All-in-one最小的KubeSphere on Kubernetes。在本教程中,我们选择在数据中心安装KubeSphere。

在KubeSphere集群准备就绪后,那么你可以通过使用kubectl编辑集群配置,将clusterRole的值设置为主机。

kubectl edit cc ks-installer -n kubesphere-system
复制代码

向下滚动并将clusterRole的值设置为host,然后点击Update(如果你使用web控制台)使其生效。

multicluster:
复制代码
clusterRole: host
复制代码

保存它,你需要等待一段时间,以便变化能够生效。安装完主机集群后,在kubesphere-system中会创建一个名为tower的代理服务,其类型为LoadBalancer。

如果集群有一个LoadBalancer插件,你可以看到EXTERNAL-IP的对应地址,它将被KubeSphere自动获取。这意味着你可以跳过设置代理的步骤。执行下面的命令来检查该服务。

kubectl -n kubesphere-system get svcThe output may look as follows:
复制代码

准备好两个成员集群

在开始之前,你需要在Amazon EKS和DigitalOcean Kubernetes上安装一个最小的KubeSphere,详见在Amazon EKS上部署KubeSphere在DigitalOcean Kubernetes上部署KubeSphere

为了管理主机集群内的成员集群,你需要使它们之间的jwtSecret相同。因此,你需要首先通过以下命令从主机集群中获取它。

kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v “apiVersion” | grep jwtSecret
复制代码

输出可能看起来像这样。

jwtSecret: “gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU”
复制代码

如果你已经在Amazon EKS和DigitalOcean Kubernetes上安装了KubeSphere,你可以通过编辑集群配置将clusterRole的值设为成员。请注意,此步骤应分别在两个成员的集群中执行。

kubectl edit cc ks-installer -n kubesphere-system
复制代码

输入上面显示的相应的jwtSecret

authentication:
复制代码
jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU
复制代码

向下滚动,将clusterRole的值设置为成员,然后点击更新(如果你使用web控制台)使其生效。

multicluster:
复制代码
clusterRole: member
复制代码

将成员集群导入到控制平面

确保你已经为亚马逊EKS和DigitalOcean Kubernetes安装了两个成员集群。然后你就可以开始将这两个成员集群导入主机集群了。在本教程中,我们只是以将亚马逊EKS导入主机集群为例,导入DigitalOcean Kubernetes的步骤与以下相同。

打开主机集群的仪表板,点击添加集群。

输入要导入的集群的基本信息,点击下一步

在连接方法中,选择集群连接代理,点击导入。它将在控制台中显示由主机集群生成的代理部署。

根据指示在成员集群中创建一个agent.yaml文件,然后复制并粘贴代理部署到文件中。在节点上执行kubectl create -f agent.yaml,等待代理启动和运行。请确保代理地址可以被成员集群访问。

当集群代理启动并运行时,你可以在主机集群中看到你导入的集群。

从成员集群列表中进入亚马逊EKS集群,你将能够看到集群的概览仪表盘,包括集群监控指标和日志。

祝贺你!现在亚马逊EKS已经被KubeSphere导入并管理,你现在应该可以把DigitalOcean Kubernetes导入其中。在双成员集群准备就绪后,在多云环境中分发云原生应用程序将变得相当容易,请享受它吧!

关于KubeSphere

KubeSphere是一个基于Kubernetes的开源容器平台,其核心是应用程序。它提供全栈式IT自动化操作和简化的DevOps工作流程。

KubeSphere已被全球数千家企业采用,如Aqara、新浪、奔莱、中国太平、华夏银行、国药集团、WeBank、Geko Cloud、VNG Corporation和Radore。KubeSphere提供向导式界面和各种企业级运维功能,包括Kubernetes资源管理、DevOps(CI/CD)、应用生命周期管理、服务网、多租户管理、监控、日志、警报、通知、存储和网络管理以及GPU支持。通过KubeSphere,企业能够迅速建立一个强大的、功能丰富的容器平台。

欲了解更多信息,请访问kubesphere.io


多集群Kubernetes。用KubeSphere管理Digital Ocean Kubernetes和Amazon EKS最初发表在ITNEXT的Medium上,人们通过强调和回应这个故事继续对话。