Kubernetes存储特别兴趣小组主席有关Kubernetes状态的问答


【编者的话】这篇文章是一个为期三个月的系列文章的一部分,该系列研究了2020年Kubernetes面临的挑战。本周,我们将研究在Kubernetes上运行有状态(stateful)工作负载的挑战。

系列文章列表:


在Kubernetes中运行有状态(stateful)的工作负载到底有多困难?正如我们和Kubernetes的开发人员在讨论经验时所发现的,最大的挑战并不一定是缺乏技术解决方案,而是每个相关人员的学习曲线,从应用开发人员到集群管理员以及传统存储管理员。当然,还有一些工具上的空缺,以及生态系统尚不成熟、尚未经过实战检验的地方。

我们与Google的软件工程师、云原生计算基金会(Cloud Native Computing Foundation)Kubernetes存储特别兴趣小组(Kubernetes Storage Special Interest Group )的主席Saad Ali讨论了Kubernetes如何简化有状态工作负载,现存的挑战以及未来的展望。

您能介绍一下Kubernetes状态管理的一些背景吗?

Ali:在较低层的存储有很多创新,同时处在高层的应用也有很多创新,但中间层的创新却并不多。要知道,在工作负载移动的同时能够动态提供存储这个问题,并没有得到真正的解决。

在Kubernetes出现之前,如果你的工作负载部署在虚拟机上,那么你必须创建一些卷,并将它们划分到存储阵列或云产品中,同时确保它们被附加到用于工作负载的正确的VM上,还确保其被正确格式化。你必须手动或使用DevOps团队预先编写的一些自定义脚本来完成这些工作。然而,如果需要将工作负载转移到另一个VM,这肯定就是一个手动的过程。

Kubernetes简化了这一过程,引入了动态卷供应的概念,这样,你不需要提前提供卷,而是先将Kubernetes凭证交给你的存储系统,再让它自动负责供应。现在容器存储接口(Container Storage Interface – CSI)允许Kubernetes与任意存储系统直接交互。

在Kubernetes中,与处理状态相关的一些关键挑战是什么?

Ali:我认为对大多数人来说,理解整个生态系统就是一个挑战。有很多做移动任务的部分也是。你必须了解我们的集群将提供什么样的存储,用户会满足这样的安排吗?如何将该存储与我的Kubernetes集群集成?我需要使用CSI驱动吗?或者还有其他选择吗?为了让最终用户满意,到底如何设置存储类?

应用开发人员作为我们的最终用户,我们将重点放在他们身上,让他们的工作变得更加轻松。但是,如果你是集群管理员,我认为在设置和运行所有内容方面仍然存在一些挑战。有50多种CSI驱动,但他们并不都是很成熟。存储供应商仍在进行测试,并试图确定CSI驱动是否能够在集群扩展时处理它。虽然,一切都朝着正确的方向在发展,但这肯定需要大量的学习成本。

我确实认为大多数的基本类型已经在那了,这可以让你成功地在Kubernetes上运行绝大多数有状态工作负载。但,学习如何使用方面肯定有问题。我也认为有大量的复杂性的存在也是一种挑战。比如,如何将虚拟机上运行的传统应用程序移植到Kubernetes?这就是一项需要巨大投入,且让人望而生畏的事情。

总的来说,Kubernetes生态系统肯定是有改进空间的。软件定义存储使用低级磁盘,以及Kubernetes中对本地存储的支持都是可以简化的领域。但是,一般来说,只要这些基本类型被容器化,它们就可以处理Kubernetes中绝大多数有状态的工作负载。

您觉得,在Kubernetes中处理有状态工作负载的最常见方式是什么?

Ali:首先,存储有很多方面,我们通常远离应用层存储,而关注块和文件。应用程序可以依赖于某种托管的数据服务,这意味着你已经将这部分工作交给了其他人,所以这就不再是你的难题了,例如你已经有了一个SDK。但是,如果希望运行自己的数据库或某种有状态的服务,它们需要写入文件和块存储。我们可以看到三种基本模式。它们是单写入块存储、多写入文件存储和某种非常快速的本地存储。如果你选择自己管理数据库并将其部署到Kubernetes上,那么你可以使用我们为Kubernetes中的块和文件存储接口所提供的基本类型。

Kubernetes存储特别兴趣小组(SIG)现在在做什么项目?

Ali:我们下一个要做的事情是使企业和生产继续按部就班,并着眼于第二天、第三天的问题。我们正在研究数据保护以及如何进行卷的快照和备份。我们已经启动了一个新的工作组,专注于数据保护,这是Kubernetes存储兴趣小组和应用兴趣小组之间的协作,因为当你开始讨论备份工作负载时,会有很多交集。这不是只针对存储,也不是仅仅针对应用的事情。

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

Ali:我们的一部分大项目将在Kubernetes 1.18的发行版中发布,我对此感到非常兴奋。同时,我们已经为增加对Windows的支持工作了一段时间,Windows CSI将在下一个版本中发布。原始块卷(Raw Block Volumes)是另一个项目,经过几年的准备,它终于可以问世了。运行在Kubernetes上的绝大多数工作负载都将存储用作文件系统,最终作为容器内的某种挂载目录。但是有些人还是喜欢访问原始磁盘,而原始块卷使这成为可能。

我们也在为CSI的容量健康检查寻找更好接口。在这一点上,一旦Kubernetes为一个工作负载提供了一个可用的卷,它就变得非常独立,你不会有太多的信息。我们正在建立一种机制,允许存储系统不断地向Kubernetes显示有关容量的健康信息。最初,它只是用来提醒用户,但最终,我们希望Kubernetes能够以编程方式响应存储系统正在显示的事件,或者最终用户可以编写自己的工具来响应信息。

原文链接:Q&A: Kubernetes Storage SIG Chair on the State of State in K8s(翻译:伊海峰)

0 个评论

要回复文章请先登录注册