草庐IT

DaoCloud 结合 Karmada 打造新一代企业级多云平台

云原生与道客 2023-04-20 原文

 

上周 Cloud Native Days China 南京站  Meetup 顺利举行,「DaoCloud 道客」大容器团队技术负责人-张潇在会上以《DaoCloud 结合 Karmada 打造新一代企业级多云平台》为主题,与 Karmada 社区及其合作伙伴一起,共同交流云原生多云多集群生产实践经验。现将演讲内容整理如下,以供读者飨食。

01

需求与困扰

今年 2 月,CNCF 发布了一项调研,数据显示,已经有 96% 的企业采用了 Kubernetes,其中 79% 的企业使用的都是通过采购的、拥有 CNCF 官方认证的 Kubernete 平台。因为 Kubernetes 其实是一个比较复杂的平台,里面集成了计算、存储、网络、调度编排等等各种功能,企业如果自己去开发和运维这样的一个平台,是十分耗费精力和成本的。而对于很多大企业来说,为了适应越来越庞大且复杂的云上业务发展需求,以及避免厂商锁定,必然会拥有多个集群和采购多家厂商的 Kubernetes 平台。那么问题就来了,面对集群繁多、业务分散、集群的边界限制等困扰,如何高效统一地管理多集群?

由此,基于客户的需求与困扰,「DaoCloud 道客」开始了多云产品的研究,并梳理出了八大关键点:云提供商多样性、变革敏捷性、灵活和可扩展性、强大安全性、网络性能改进、加强风险管理、避免供应商锁定、推动创新。

02

为何选择
karmada

首先,「DaoCloud 道客」对社区的各种开源项目进行了广泛的调研对比和筛选,最终选择了云原生多云编排开源项目 Karmada。其中,Karmada 最突出的一个点在于,可以让用户像使用单集群一样使用多集群。这意味着用户不必花费太多的学习成本,就能上手基于  Karmada 开发的企业级多云平台,因为用户在前期学习 Kubernetes 的时候已经打下了深厚的基础。通过 Karmada 最核心的能力-- Kubernetes 原生 API 兼容的能力,用户不必对原来使用的 Kubernetes 平台做过多的改造,就能很好地适配 Karmada 的多集群管理平台。同时,Karmada 还具有开放中立、告别绑定、开箱即用、集中式管理、丰富的集群调度策略和流量治理方案等特性和功能。

接着,「DaoCloud 道客」基于 Karmada 研发了一个企业级的多云管理功能模块-KairShip,旨在助力用户把业务从云下走向云上,单云丝滑切换到多云,让用户无需关注底层基础设施差异,不用过多接受新概念。现在 KairShip 已经完美集成到「DaoCloud 道客」最新发布的下一代云操作系统「云原生应用云平台 DaoCloud Enterprise 5.0」之中,通过与应用工作台、可观测性、全局管理、云原生化应用、多云编排、容器管理等功能模块结合,实现一键创建多云集群实例、多云管理权限、应用跨集群分发、存储及配置跨集群创建、跨集群资源检索、跨集群故障转移等多集群管理的核心能力。

图源:演讲 PPT

03

产品化
及未来探索

在 KairShip 中,「DaoCloud 道客」做了一些产品化的研发基础组件里,开发了负责 API 请求的 KairShip Apiserver,实现权限等同步控制逻辑的 KairShip Controller Manager,支持公有云、私有云、边缘场景网络互通的 network tunnel。同时引入了一些开源组件,如:支持 Karmada 实例 LCM 的 Karmada operator,支持多云资源检索查询加速的 Clusterpedia,以及提供 Karmada host 浏览器终端能力的 CloudTTY。其中, Clusterpedia 和 CloudTTY 是「DaoCloud 道客」自主开源的云原生项目。

图源:演讲 PPT 

KairShip 有三个非常重要的能力,第一个是多云多实例的实现。该功能主要为了满足两个客户需求,一是客户环境因素需要多个 Karmada 实例;二是快速一键接入各个集群,屏蔽底层网络等基础设置。因此,「DaoCloud 道客」在 Karmada 开源社区贡献了一个开源组件 Karmada operator,基于 Karmada 社区 helm charts,通过控制器搜集子集群概览信息到 Karmada 实例中,实现 Karmada 实例快速创建、更新、卸载以及 D1 D2 的维护,支持子集群快速一键接入 Karmada 实例。

图源:演讲 PPT 

第二个是多云权限,企业级的产品功能最头疼的就是权限问题。Karmada 应用编排过程权限问题怎么隔离?不同部门使用 Karmada,能实现多租户隔离么?「DaoCloud 道客」把  Karmada Host 作为一个普通集群加到整个 DCE 5.0 的集群管理中,同时抽象出关键特征 (RBAC),与多租户中心进行对接,让 Karmada 实例级别实现逻辑层权限同步与校验,并利用 KairShip Apiserver 层进行 API 权限的校验,从而实现多云权限管理。

第三个就是多云资源检索,如何去统一地查看多个集群 (实例) 中的资源呢?「DaoCloud 道客」  通过 ClusterPedia 聚合多集群资源,在兼容 K8s OpenAPI 的基础上额外提供了更加强大的检索功能,让用户更快更方便地在多集群中获取到想要的任何资源。作为一个已经进入 CNCF 沙箱孵化的多云复杂检索工具,ClusterPedia 拥有诸多优势,如:支持查询资源时请求附带关系资源;兼容 Kubernetes OpenAPI,可以直接使用 kubectl 进行多集群检索,无任何依赖;兼容收集不同版本的集群资源,不受主集群版本约束;统一主集群和多集群资源检索入口;资源收集高性能,低内存等等。

在分享的最后,张潇表示得益于 Karmada 社区的不断发展和各方面的愈加完善,「DaoCloud 道客」聚焦在用户体验提升以及企业级其他功能方面,做了差异化的补充。并且将大部分功能积极贡献回社区,坚持做时间的朋友。正如上面提到的向社区贡献的 Karmada operator 能力,希望能够与社区的小伙伴一起优化,为更多用户带来价值。

接下来,Karmada 社区将聚焦多云应用的东西向网络流量问题 (Karmada + Istio)、Karmada-host 控制面高可用 (ETCD)、Karmada 实例平滑升级、多云环境下数据服务如何更好地支持多云应用等方面的功能开发。欢迎广大开发者加入社区,一起使用、讨论与贡献。

图源:演讲 PPT 

有关DaoCloud 结合 Karmada 打造新一代企业级多云平台的更多相关文章

  1. ruby-on-rails - 结合 meta_search 与 acts_as_taggable_on - 2

    我在开发的Rails3网站的一些搜索功能上遇到了一个小问题。我有一个简单的Post模型,如下所示:classPost我正在使用acts_as_taggable_on来更轻松地向我的帖子添加标签。当我有一个标记为“rails”的帖子并执行以下操作时,一切正常:@posts=Post.tagged_with("rails")问题是,我还想搜索帖子的标题。当我有一篇标题为“Helloworld”并标记为“rails”的帖子时,我希望能够通过搜索“hello”或“rails”来找到这篇帖子。因此,我希望标题列的LIKE语句与acts_as_taggable_on提供的tagged_with方法

  2. ruby-on-rails - 将 Amazon Simple Notification service SNS 与 ruby​​ 结合使用 - 2

    很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我需要从基于ruby​​的应用程序使用AmazonSimpleNotificationService,但不知道从哪里开始。您对从哪里开始有什么建议吗?

  3. ruby-on-rails - 将 Rails 与 Paperclip 和 SWFUpload 结合使用 - 2

    我有一个基本的Rails应用程序测试,其中包含一个用回形针处理的照片字段的用户模型。我创建了能够创建/编辑用户的View,并且照片上传工作正常。Editinguseruser_path(@user),:html=>{:method=>"put",:multipart=>true}do|f|%>|然后,我想将SWFUpload集成到我的应用程序中。我试着按照这个tutorial并运行testproject没有任何成功:浏览按钮不会打开文件对话框,并抛出错误#2176,这是关于selectFiles()方法的。首先,问题是Flashv.10与项目中包含的旧版本SWFUpload(2.1.0

  4. ruby-on-rails - 将 Facebook Connect 与 Authlogic 结合使用 - 2

    我正在尝试使Authlogic和FacebookConnect(使用Facebook)发挥良好的作用,以便您可以通过正常注册方式或使用Facebookconnect创建帐户。我已经能够让连接以一种方式工作,但注销只会在facebook而不是我的网站上注销,我必须删除cookie才能使其正常工作。任何帮助都会很棒,谢谢! 最佳答案 这是我使用FacebookConnect扩展、authlogic和OpenID制作的示例应用程序。它仍然需要一些工作,但它确实起作用了。http://big-glow-mama.heroku.com/htt

  5. 网页设计期末作业,基于HTML+CSS+JavaScript超酷超炫的汽车类企业网站(6页) - 2

    🎉精彩专栏推荐💭文末获取联系✍️作者简介:一个热爱把逻辑思维转变为代码的技术博主💂作者主页:【主页——🚀获取更多优质源码】🎓web前端期末大作业:【📚毕设项目精品实战案例(1000套)】🧡程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作(110套)】🌎超炫酷的Echarts大屏可视化源码:【🔰Echarts大屏展示大数据平台可视化(150套)】🔖HTML+CSS+JS实例代码:【🗂️5000套HTML+CSS+JS实例代码(炫酷代码)继续更新中…】🎁免费且实用的WEB前端学习指南:【📂web前端零基础到高级学习视频教程120G干货分享】🥇关于作者:💬历任研发工程师,技术组长,教学总监;

  6. 企业大数据发展面临问题之存算分离技术思考 - 2

    文章目录概述背景为何要存算分离优势**应用场景**存算分离产品技术流派华为JuiceFSHashDataXSKY概述背景Hadoop一出生就是奔存算一体设计,当时设计思想就是存储不动而计算(code也即是代码程序)动,负责调度Yarn会把计算任务尽量发到要处理数据所在的实例上,这也是与传统集中式存储最大的不同。为何当时Hadoop设计存算一体的耦合?要知道2006年服务器带宽只有100Mb/s~1Gb/s,但是HDD也即是磁盘吞吐量有50MB/s,这样带宽远远不够传输数据,网络瓶颈尤为明显,无奈之举只好把计算任务发到数据所在的位置。众观历史常言道天下分久必合合久必分,随着云计算技术的发展,数据

  7. NFT交易平台开发 创建NFT数字藏品平台 - 2

    为什么需要NFT市场?NFTMarketplace允许用户购买、出售、交易、查看或创建自己的NFT,就像他们需要一个市场来购买物理或数字世界中的大多数产品一样。几乎每个人都可以进入NFT市场,但要做到这一点,用户必须满足以下要求:一个NFT市场用户账户,允许您在给定平台上购买NFT。你需要一个与区块链兼容的加密钱包来购买NFT。NFTMarketplace非常重要,因为它连接了买卖双方,并为用户提供了多种工具来快速创建自己的NFT。艺术家可以在市场上列出要出售的NFT,买家可以通过投标过程探索市场并购买物品。NFT市场开发过程解释创建NFT市场是一个耗时的过程,需要编程知识和理解。那么搭建NF

  8. Ruby跨平台EOF符号的写法 - 2

    在Ruby中是否有一种平台无关的方式将EOF符号写入字符串。在*nix中,我认为符号是^D,但在Windows中是^Z,这就是我问的原因。 最佳答案 EOF不是一个字符,它是一个状态。终端使用控制字符来表示此状态(C-d)。没有这样的事情是“读一个EOF字符”,写一个也是一样的。如果您正在写入文件,请在完成后将其关闭。看这个mailinglistpost:ItsoundslikeyouarethinkingofEOFasanin-bandbutspecialcharactervaluethatmarkstheendoffile.It

  9. ruby - 如何将 DynamoDB Local 与 AWS Ruby 开发工具包结合使用? - 2

    亚马逊的documentation提供有关如何使用DynamoDBLocal的Java、.NET和PHP示例。你如何用AWSRubySDK做同样的事情??我的猜测是你在初始化时传入了一些参数,但我不知道它们是什么。dynamo_db=AWS::DynamoDB.new(:access_key_id=>'...',:secret_access_key=>'...') 最佳答案 您使用的是SDK的v1还是v2?您需要找出答案;从上面的简短片段来看,它看起来像v2。为了以防万一,我已经包含了这两个答案。v1答案:AWS.config(us

  10. ruby - 从企业防火墙后面安装 gem - 2

    我怀疑公司防火墙阻止安装gem。我定义了HTTP_PROXY,我可以通过以下命令查看远程gem:jruby-Sgemlist-r但是当我去安装gem时,我得到一个404:jruby-Sgeminstallrails除了维护内部gem存储库之外,是否有解决此问题的良好解决方法? 最佳答案 对于ruby​​gems,将它放在我的gem.bat中这对我有用@"%~dp0ruby.exe""%~dpn0"%*--http-proxyhttp://domainname.ccc.com:8080对于jrubygems这有效@"%~dp0jrub

随机推荐