立即联系我们
提交成功!
你所提交的信息已经成功提交,会有专业人员在48小时内跟您联系!谢谢。
提交失败!
抱歉,提交失败,请重新校准信息提交,谢谢。
CN EN
产品
解决方案
开发者资源
中文

KubeCon 专题回顾 | 解锁云原生最佳实践

技术面对面

2023.10.26

微信图片_20240801153821.png

Gartner 预测,到 2025 年,超过 95% 的新数字业务将被部署在云原生平台上,属于云原生的时代已经到来。在具体的业务场景下,企业需要云原生最佳实践作为经验指导,更有效地完成云原生落地。那么今天,我们就来回顾一下 KubeCon China 2023 中关于云原生最佳实践的精彩内容。

01

金融行业
云原生存储的最佳实践

近年来,大数据、人工智能、区块链等技术兴起并广泛应用,数据已经成为数字时代的基础性战略资源和关键要素,银行业也在经历着一场大数据的变革。活动中,「DaoCloud 道客」与浦发银行为大家带来了一场精彩的联合分享《金融行业云原生存储的最佳实践》

浦发银行总行信息科技部大数据平台项目经理褚杰提到,浦发银行制定了“数字科技十四五”的战略规划,明确推进金融数字化转型,以数据为驱动,以创新为引擎,加速全行业务转型发展。在这个背景下,其总行的大数据应用中心着力构建了数据能力体系规划并不断丰富完善。在整个建设过程中,浦发银行通过研发管理系统 DIAMO 完成了多种大数据生态产品的统一管理,不断探索计算引擎云化的路径,落地存算分离架构,提升大数据平台的资源利用率。

此外,在存储方面,大数据平台云原生化的过程中,和数据相关的有状态应用会逐步运行到 Kubernetes 上。这一过程,要求云原生平台能够提供完善的持久化服务。针对这个问题,「DaoCloud 道客」的资深数据工程师郑泓超重点为观众介绍了云原生存储系统的开源项目——Piraeus

微信图片_20240801153825.jpg

郑泓超《金融行业云原生存储的最佳实践》

郑泓超提到,Piraeus 是由浦发银行、「DaoCloud 道客」和奥地利 LINBIT 公司共同孵化的云原生本地存储项目,旨在 Kubernetes 平台上实现完善的本地卷存储服务。2021 年 7 月,Piraeus 正式被 CNCF 接纳为 Sandbox 项目。

Piraeus 是和 Kubernetes 强耦合的云原生存储系统,具备严格的节点亲和性和本地卷的读写性能,可以基于本地卷实现副本的高可用,以及基于 Kubernetes API 完成故障切换和迁移。郑泓超介绍,Piraeus 可以提供不同性能的存储卷,将不同的存储介质划分到独立的存储池中进行统一管理,基于这样的存储池,Piraeus 能够更好地完成数据地备份恢复和在线迁移。

图片

Piraeus 的 IO 性能十分优秀,郑泓超以在 Kubernetes 平台上使用 NVMe 固态硬盘为例,测试了 NFS,、Longhorn 和 Piraeus 三种存储方案。结果显示,Piraeus 在各个测试中都表现优异,在最苛刻的“随机小 IO 高并发读写”测试中,Piraeus 在 IOPS, 延迟和吞吐量等指标上,更是呈现出了绝对优势。

此外,为了适应大数据平台的具体场景并将 Piraeus 的能力最大化,「DaoCloud 道客」和浦发的项目组在此基础上开发出了快速故障切换控制器和 NFS 转发控制器两个组件,完善了快速故障转移和在 CNI 环境进行 NFS 转发的过程。郑泓超提到,这两个组件已经回馈给了社区,也欢迎更多开发者参与到项目开发中。

更多详细的内容可以通过下方链接找到所属议题下载分享内容,或进入 CNCF 账号观看回放。

分享文件下载:
https://kccncosschn2023.sched.com/event/1PTFU/shu-gun-chan-chang-zha-huan-best-practice-for-cloud-native-storage-in-finance-industry-yang-cao-jie-chu-shanghai-pudong-development-bank-alex-zheng-daocloud?iframe=no&w=100%&sidebar=yes&bg=no

视频回放:
|https://mp.weixin.qq.com/s/RJjUVc5sD64Q7vDQ3KsLFw

02

SIG-Scheduling
介绍与深入探讨

调度器作为 Kubernetes 架构中非常重要的一个组件,Kubernetes 社区为此成立了 SIG Scheduling 小组来管理通用调度器和调度相关组件的开发。在会上,SIG Scheduling 小组的代表成员殷纳和王庆璨带来了《SIG-Scheduling 介绍与深入探讨》的主题分享,他们向观众介绍了 SIG 内的一些正在进行的工作和方向。

图片

殷纳、王庆璨《SIG-Scheduling 介绍与深入探讨》

殷纳重点为大家介绍了 SIG Scheduling 的一些新项目的进展。首先是 Kueue,这是一个基于 Kubernetes 的原生作业队列系统,提供资源管理、多租户支持和资源公平共享等能力,有效解决了 Kubernetes 中 Ray 作业的挑战(Ray:AIGC 时代主流的分布式 AI 框架之一,尤其擅长处理大规模数据和计算密集型任务)。殷纳解释了在 Kubernetes 环境下 Kueue 的运作过程,详见《KubeCon 专题回顾 | 探索 AI 与云原生的全新海域》

殷纳说,除了 Ray 作业之外,Kueue 能对所有类型的批处理作业进行管理,目前已经和BatchJob、JobSet、MPIJob、TFJob、PyTorchJob、XGBoostJob、PaddleJob 等完成了集成,还有更多类型的作业正在开发中。他还提到,在即将发布的 Kueue v0.5.0 中,会包含可观测性、Workload priority、Kubeflow jobs、Pod 管理、两阶段提交、高级抢占策略等功能更新。

殷纳提到的第二个项目是 KWOK。因为轻量化、快速、灵活性等优势,KWOK 受到了社区的热烈关注。本文 04 段落会对这个项目有更加详细的介绍。

第三个新项目是 kube-scheduler-wasm-extension。以往扩展 scheduler 的方式,存在着重新编译耗时长、资源损耗、调度冲突、延迟明显等问题。kube-scheduler-wasm-extension 这个项目提供了 WebAssembly 的方式,有效地解决了以上问题。通过集成 Wasm Plugin,实现了动态编译,且不影响整个调度器的调度逻辑。

更多详细的内容可以通过下方链接找到所属议题下载分享内容,或进入 CNCF 账号观看回放。

分享文件下载:
https://kccncosschn2023.sched.com/event/1PTKH/sig-scheduling-tao-cheng-sig-scheduling-intro-deep-dive-qingcan-wang-shopee-kante-yin-daocloud?iframe=no&w=&sidebar=yes&bg=no

视频回放:
https://mp.weixin.qq.com/s/798unqa4ThrSiZ7pUGkYbA

03

构建一个主动的高可用
Kubernetes 控制平面集群

作为关键的控制平面,Kubernetes 本身在多数据中心环境中容易成为单点故障。目前,对于 Kubernetes 的高可用性,最常见的方案是通过单个控制平面管理多个集群,与此同时,社区内也需要一个针对单个控制面本身的高可用解决方案。在会上,「DaoCloud 道客」与上汽通用带来了一场主题为《构建一个主动的高可用 Kubernetes 控制平面集群》的联合演讲

图片

宋文杰、黄敏杰、戴佳顺《构建一个主动的高可用 Kubernetes 控制平面集群》

来自上汽通用的戴佳顺提到,早在 2016 年,上汽通用意识到容器技术是未来的重点方向,因此开始了早期的技术探索。上汽通用首先在经销商/B2C 相关业务上率先开始容器化试点,并在 2018 年建设了如意云容器云平台。2020 年,“敏态”和“稳态”成为了汽车行业的年度热词,上汽通用的云平台团队开始思考,是不是可以使用管理容器的方法管理传统计算资源和服务,在这个过程中,平台的可用性又如何保障呢

「DaoCloud 道客」高级软件工程师黄敏杰首先给观众科普了 Kubernetes 平台是如何进行资源管理的。首先,Kubernetes 有一套自己的内置资源,比如 Pod、service(服务)、deployment(部署)等,这些资源可以基于版本、类型、Group 等进行管理。第二,通过 CRD 方式,用户可以定义自己的资源类型,这个方式可以有效扩展资源类型。第三,通过自定义 API Server,用户可以扩展 Kubernetes 系统的 API 接口,以此来自定义资源类型和子资源等,这种方式相比 CRD 具备更高的灵活性,能满足一些特殊的需求,比如命令式管理、同步操作资源等。此外,还有一种方式叫做 WebHook,这种方式可以在请求抵达 API Server 之前,对其进行自定义操作。

对于 Kubernetes 的高可用性,常见的单集群方案能够保证单个节点宕机时组件的正常运行,而为了解决机房故障时应用稳定运行的难题,社区中提出通过多集群方式来提高应用的高可用性,比如多副本和异地多活的部署方式。此外,社区中还出现了 Karmada 等开源项目,这个项目能够通过控制平面实现应用故障转移,进一步减少宕机带来的损失。

在这个过程中,资源对象的版本一致性十分重要。此时,「DaoCloud 道客」软件研发工程师宋文杰为大家介绍了 ResourceVersion 和 Generation 这两个属性。

ResourceVersion:Kubernetes 资源对象的内部版本字符串,这是由系统设置的,单调递增的只读字段。

Generation:表示资源期望状态的序号,这是由系统设置的,单调递增的只读字段。

当资源对象更新时,ResourceVersion 的值是增长的,用户可以通过比较 ResourceVersion 的值来判断资源对象是否变化和出现冲突,而 Generation 更常用于资源版本的标识生成。Kubernetes 通过定义 ResourceVersion 来确保用户对集群资源的并发操作是正确的、可靠的、一致的,通过 Generation 来实现版本迭代的管理。

更多详细的内容可以通过下方链接找到所属议题下载分享内容,或进入 CNCF 账号观看回放。

分享文件下载:
https://kccncosschn2023.sched.com/event/1PTFj/zha-pan-zhi-kubernetesxiao-zhong-shi-building-an-active-active-ha-kubernetes-control-plane-cluster-minjie-huang-wenjie-song-daocloud-jiashun-dai-saic-general-motors?iframe=no&w=&sidebar=yes&bg=no

视频回放:
https://mp.weixin.qq.com/s/277PzC3qwTr5buZWFADcmw

04

深入研究:
KWOK

随着云原生技术的普及,越来越多的企业开始采用集群部署的方式来提高系统的可用性和灵活性,开发者在进行测试时,往往需要在短时间内快速搭建一个包含数千节点的集群,并通过少量资源模拟真实的节点。「DaoCloud 道客」云原生研发工程师张世明和联合演讲人梁豪在主题分享《深入研究:KWOK》中提出了解决方案。

图片

张世明《深入研究:KWOK》

张世明提到,KWOK 的名字很简单,其实是 Kubernetes WithOut Kubelet 的缩写,顾名思义,就是没有 Kubelet 的 Kubernetes。基于此,KWOK 能够立刻创建和删除集群和节点,不需要等待或是进行额外配置。KWOK 项目当前主要包括两个工具:

kwok:该项目的基石,负责维护 Node/Pod 资源, 和提供 Kubelet 的接口。

kwokctl:命令行工具,负责组合 kwok 和 Kubernetes 的控制面组件。

本质上,kwok 的作用和 kubelet 类似,主要是维持 Node 和 Pod 资源的生命周期,但因为不会在真实节点上运行真实的容器,不需要准备真实的机器,也不需要启动 kubelet 进程,所以通过 kwok 模拟各种 Kubernetes 资源的时间大大缩短了,而且整个过程的资源消耗很小,在单一笔记本上就可以模拟出数千节点。因此,kwok 适用于一些控制面组件性能压力测试的场景。

而 kwokctl 本质上是一个将各个组件进行组合,使其成为一个集群的工具。张世明通过 Demo 演示了 kwokctl 创建 Kubernetes 集群的功能,只需要通过一条简单的 kwokctl create cluster 命令就能在几秒钟内创建一个 Kubernetes 集群。

更多详细的内容可以通过下方链接找到所属议题下载分享内容,或进入 CNCF 账号观看回放。

分享文件下载:
https://kccncosschn2023.sched.com/event/1PTJn/ye-ge-daepkwok-deep-dive-kwok-shiming-zhang-daocloud-hao-liang-tencent?iframe=no&w=&sidebar=yes&bg=no

视频回放:
https://mp.weixin.qq.com/s/5AoL4mFNA_Uq143c8fFiXQ

欲了解云原生更多动态,敬请关注 Kubecon North American 2023,「DaoCloud 道客」和全球云原生开发者、用户将带来云原生更多前沿热点和实践案例。