Cloud Foundry 与Kubernetes: CF/K8s结合简史

简介: Cloud部门Cloud Foundry方向首席架构师)的一篇技术博客。在这篇博客中,Simon分享了将Cloud Foundry与Kubernetes结合的多种技术选型的探索历程,包括可行性分析、最佳实践、经验总结和价值意义等话题,旨在最大程度上利用和发挥两者的优势,并提升开发者体验。

Cloud部门Cloud Foundry方向首席架构师)的一篇技术博客。在这篇博客中,Simon分享了将Cloud FoundryKubernetes结合的多种技术选型的探索历程,包括可行性分析、最佳实践、经验总结和价值意义等话题,旨在最大程度上利用和发挥两者的优势,并提升开发者体验。

同时,在即将到来的Cloud Foundry Summit North America 2018418-420日),Simon会在现场与大家分享最新进展Demo Theater: IBM Cloud Foundry Enterprise Environment ,敬请关注!

原文链接: Cloud Foundry and Kubernetes: A brief history of CF/K8s (翻译:张龚

【译者介绍】

张龚,IBM高级软件工程师,参与了文中提及的BOSH Kubernetes CPI以及CFEE 等相关项目的开发。

【正文

在过去中几年,在云计算领域的开源社区中最有争议的话题莫过于Cloud Foundry(CF)和Kubernetes(K8s)的关系。大家的疑问紧紧围绕在三个问题:“它们会互相取代对方吗?”,“它们是互斥的吗?” ,“还是说它们是可以融合的?”。

放眼望去在目前的商业产品中,两者几乎没什么关联——两个技术栈(stack)是分离的,都可以运行在各种IaaS之上, 几乎没有集成,就算是有也仅仅是在“CF和K8s共享一个服务目录(Service Catalog)”这种级别,而没有更深层的系统级别集成 。

浅显的分析两者的关系并没有特别大的意义。当然了,这两种技术有一定程度的重叠,同时在一些关键领域是互相补充的——下面的表格是一个简单的总结:


表格1:CF和K8s对比

“容器运行时”(Container Runtime)绝对是CF和K8s有巨大重叠的部分,但是它在两者中分别基于不同的实现方式(尽管最终都是基于 runc/containerd实现的)。这导致了一些后果,比如K8s引入了一个新的功能(比如需要容器组(Container Group)的边车(Sidecar)),CF也紧随其后开始实现类似的功能,反之亦然。

但另一方面,开发人员在K8s的体验比较糟糕,毕竟通常K8s被认为更像是“IaaS+”而不是一个“PaaS”。


图片1:开发者体验

但如果K8s就是“IaaS+”而不是一个“PaaS”,那是不是可以将CF运行在K8s之上?我的意思是CF一个核心主张就是“IaaS”无关,所以这可能是可行的?于是我们进行了一项尝试。

可能很多人已经有所了解,CF通常是由BOSH这个工具来负责部署和生命周期管理的。BOSH通常会负责搭建一个CF的环境,并且它通过CPI(Cloud Provider Interface)的机制屏蔽了底层基础设施的差异。假设您说“我想要一个虚拟机”,这时CPI会将这个请求转换成适用于不同底层基础设施提供商的API调用,比如AWS,IBM,Google或者VMWare等等。

所以我们第一个尝试就是基于这个原则,也就是编写一个支持Kubernetes的CPI。但是最初的尝试却以失败告终。

http://v.youku.com/v_show/id_XMzUzODc0Nzk5Mg==.html?spm=a2h3j.8428770.3416059.1

视频1: 使用 Kubernetes作为Cloud Foundry的IaaS

具体的细节详见上面视频中Sandy和Monika在CF峰会的演讲,总体可以归结为:CPI认为IaaS层是“无知的”并且CPI掌握最高控制权,但在K8s的世界里并不是这样。K8s是个智能的“IaaS+”,比如CF的一个组件崩溃了并且需要恢复,那么应该谁来负责?BOSH还是K8s?答案并不是显而易见的,我们把这种情形称之为“编排者脑裂”,这也给第一次尝试判了死刑。

幸运的是,我们的合作伙伴SUSE已经开发了两个项目FissileSCF ,他们采取了一种更加彻底的方式,将BOSH运行时全部移除了。显然这对CF的部署和运维是有一定影响的,但优点是这种方式是真正的K8s原生部署方式。所以结论是:我们开始了新的尝试,做了一定的调整,尝试部署后效果很满意!如果你想要进一步了解最新进展,比如理想情况下把现有的方案最终与BOSH相集成,请参考这里 (Google doc)。

尽管如此,上面这种方式还是有一定缺陷,正如表格1所示,CF有一个原生的容器运行时叫Garden,Fissile将它转化成为Docker镜像的一部分,所以最终CF的App是运行在Garden容器中,而Garden容器又运行在一个Kubernetes Pod中的Docker容器里,听起来很不优雅,对吧?

如果您有一点虚拟化嵌套的经验,很有可能都不想再读下去了,但请继续坚持一下。确实,从概念上来讲这种情况是“嵌套的容器”,但是事实上情况并没有听起来那么糟。因为“容器的嵌套”并不是真的嵌套,它们更像是同个级别的概念。 根据容器的基本定义,一个容器只是隔离起来的操作系统进程。操作系统进程不可能嵌套, 容器也就不可能嵌套。从调用的层次结构来看,它们的关系是父子关系,但是事实上这两个容器是并列运行的。

尽管刚才我说这种方式不错,但是也并不是那么理想。问题倒不是在性能方面,而是在用户以及运维体验方面。比如我使用“cf push myApp”部署一个应用,之后使用kubectl去查看我的K8s集群,我预期看到的是已经生成一个名为“myApp”的POD 。而以前面这种方式,我只会看到一个名为“garden”的POD,进入“garden”后才能找到我的应用“myApp”。这样是非常冗余的——我们能不能结合CF和K8s两者,并把K8s作为CF里的容器运行时呢?这样不就解决了我们所有的问题并且能够汲取两个平台的精华?道阻且长,但值得一试。

我们进行了新的尝试。本质上,我们想要在部署Cloud Foundry的应用时使用其它的容器调度者。 这种方式利用其它调度者的优势并且可以保留Cloud Foundry的用户体验(“cf push”)和抽象层。如果您想了解的话,我们的Cube代码原型可以在这里找到——您也可以通过下面的视频立即体验!

http://v.youku.com/v_show/id_XMzUzODc2Mzc4NA==.html?spm=a2h3j.8428770.3416059.1

视频2:CF push to K8s

我们称之为“Cube”的原型主要包括四个部分:

· Sink会从CF Cloud Controller拿到目标app并且建立相应的Kubernetes资源。它依赖于Registry来获取droplet需要的OCI镜像,也依赖于 OPI来抽象与K8s的交互。

· Registry是一个根据CF droplet来提供镜像的OCI registry。最终这部分会被移到Bits-service。

· St8ge通过运行Kubernetes/OPI 一次性的任务实现了Staging。

· OPI 或者“orchestrator provider interface”提供了在多个调度者之上的抽象层,灵感来源于Diego的LRP/Task模型以及BOSH CPI的概念。

不言而喻,这个项目仅仅是这段旅程的一个开始,而这段旅程也并不会是一帆风顺的,但是我们相信我们一定可以取得成功并为CF和K8s架起一座桥梁!

本文转移开源中国-Cloud Foundry 与Kubernetes: CF/K8s结合简史

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
301 2
|
8月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
766 33
|
8月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
9月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
8月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
9月前
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
|
23天前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
146 1
|
30天前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
197 89
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
245 9
|
6月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。

热门文章

最新文章

推荐镜像

更多