请选择 进入手机版 | 继续访问电脑版

Kubernetes 有状态工作负载:现状与挑战

所在版块: 容器云 2020-03-06 15:53 [复制链接] 查看: 657|回复: 1
在 Kubernetes 中运行有状态工作负载有多难? 正如我们在谈论 Kubernete 开发者体验时发现的那样 ,最大的挑战不一定是缺乏技术解决方案,而是相关人员的学习曲线:从应用程序开发者,到集群管理员,以及传统存储管理员。 当然挑战中还包括:工具欠缺,生态系统还不成熟,以及未经生产检验等方面。


作者 : Emily Omier
译者 : 张寿红

本文是针对 Google 软件工程师,云原生计算基金会 Kubernetes Storage SIG 主席Saad Ali 的一篇访谈,讨论了 Kubernetes 如何使有状态工作负载的运行变得更轻松,还存在的挑战以及未来的目标。  

11.jpg

能否给我们介绍一下 Kubernetes 中有关状态管理的背景知识?


Ali:在状态管理方面 Kubernetes 在底层(存储层)和上层(应用层)做了大量的创新,但在中间层上创新不足。让存储随着工作负载的移动而动态可获得的问题目前还没有被真正解决。

在 Kubernetes 出现之前,如果你要为部署在虚拟机上的工作负载提供存储,需要完成的操作有:从存储阵列或云厂商提供的存储中创建存储卷,格式化存储卷,然后挂载到工作负载所在的虚拟机上。这些操作一般是通过手动或 DevOps 团队提前写好的自定义脚本来完成。如果你需要将工作负载迁移到另外一台虚拟机上,那将是一个非常繁琐的过程。

Kubernetes 通过引入动态存储卷供应(Dynamic Volume Provisioning)的概念简化了这一过程。有了动态存储卷供应,你不再需要提前准备好存储卷,而只需要将存储系统的访问凭据配置到 Kubernetes 中,然后 Kubernetes 就可以自动为工作负载提供存储卷。目前,Kubernetes 可以与任意支持容器存储接口(CSI)的存储系统交互。

Kubernetes 中有关状态处理主要有哪些挑战?

Ali:我认为对大多数人来说理解整个生态系统是一个挑战。这里有许多不确定的因素需要考虑。比如:集群可以用的存储有哪些?这些存储是否能满足用户的需求?如何将存储集成到 Kubernetes 集群?是否使用 CSI 驱动?是否有其它选项?如何部署配置出对终端用户有意义的存储类型?

我们通过努力已经让终端用户(应用程序开发者)在 Kubernetes 上使用存储上变得简单。但如果你是集群管理员,要把存储在集群上配置好并正常运行还有一些挑战。目前有超过 50 个 CSI 驱动,但都不太成熟。存储厂商还处于试水阶段,比如正在尝试搞清楚随着集群规模的扩大,CSI驱动是否还能工作正常。现在一切都朝着正确的方向在发展,但还有不少这方面技术知识普及的事情需要做。

我认为大多数基础的东西已经具备,这使你可以在 Kubernetes 上成功运行绝大多数有状态工作负载。但在这方面技术知识的普及上还存在问题。同时我认为这里面有巨大的复杂性。想一想你如何将一个运行在传统虚拟机上的应用迁移到 Kubernetes 上运行?这里面的工作量大得令人望而生畏。

整个 Kubernetes 生态系统肯定有改进的空间。比如在 Kubernetes 中,对软件定义存储系统的底层磁盘发现和本地存储支持还可以进一步简化。但总的来说,只要将它们容器化,Kubernetes 能处理绝大多数有状态工作负载。

Kubernetes 中人们处理有状态工作负载最常见的方式有哪些?  

Ali:首先,存储有很多方面,我们不太关心应用层存储,而只关注块存储和文件存储。 如果应用程序使用的是某种托管数据服务,那存储管理的工作就交给了数据服务提供商,应用开发者只需要使用 SDK 调用这些服务即可。 但是,如果人们想要运行自己的数据库或某种有状态服务,就需要用到文件存储和块存储。我们看到三种基本模式:独享块存储,共享文件存储和本地存储(读写速度快)。 如果你选择自己管理数据库并将其部署在 Kubernetes 上,则可以使用我们在 Kubernetes 中提供的块存储和文件存储接口。  

Kubernetes Storage SIG 目前正在从事哪些项目?

Ali:对我们来说,下一阶段的工作重点是将 Kubernetes 有状态工作负载做到企业级生产可用,以及解决一些新发现的问题。同时我们也在研究数据保护以及如何进行卷快照和卷备份。 我们已经成立了一个专注于数据保护的新的工作组,该工作组是Kubernetes Storage SIG 和 Kubernetes Application SIG 之间的协作,因为当你开始谈论备份工作负载时,这两个小组间会有很多交集,这不是存储小组或应用小组单方面就能完成的事情。

Kubernetes 中有状态工作负载的未来会是什么样?  

Ali:作为 Kubernetes 1.18 的一部分我们将发布一些大的项目。 我们一直在努力增加对 Windows 的支持,在 Kubernetes 1.18 中 Windows CSI 将发布 Alpha 版本。 另外,经过多年的努力,Raw Block Volumes 项目将到达 GA 阶段。 在 Kubernetes 上运行的绝大多数工作负载都以文件系统的方式来使用存储,这表现为挂载到容器内的目录。但也有工作负载更愿意访问原始磁盘,Raw Block Volumes 使这一需求得到了满足。  

我们也在看对 CSI 卷健康检查有没有更好的接口。到目前为止,一旦 Kubernetes 使存储卷对工作负载可用,就算完成了任务,对卷的运行状况并没有太多信息。 我们正在建立一种机制,以允许存储系统连续不断地向 Kubernetes 上报有关卷的健康信息。打算一开始这只用于用户告警,但最终我们希望 Kubernetes 可以以编程方式响应存储系统上报的事件,或者终端用户可以编写自己的工具来响应这些上报的信息。

   12.jpg

原文链接:https://thenewstack.io/qa-kubern ... te-of-state-in-k8s/
回复

使用道具 举报

西瓜啦啦

发表于 2020-8-13 16:15:13 | 显示全部楼层
本文是针对 Google 软件工程师,上海快3云原生计算基金会 Kubernetes Storage SIG 主席Saad Ali 的一篇访谈,讨论了 Kubernetes 如何使有状态工作负载的运行变得更轻松,还存在的挑战以及未来的幸运飞艇目标。   
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

关注时速云公众号

QQ|Archiver|小黑屋|云原生技术社区 | 时速云 ( 京ICP备14045471号 )

GMT+8, 2021-12-2 03:18 , Processed in 0.087364 second(s), 24 queries .

快速回复 返回列表