10

现状调查:Kubernetes开发人员体验一瞥

 4 years ago
source link: http://dockone.io/article/9813
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

jIj2Qvj.jpg!web

这篇文章是一个为期三个月的系列文章的第一部分,该系列将研究2020年Kubernetes面临的一些挑战。1月份这一篇,让我们来研究Kubernetes开发人员的体验。

尽管Kubernetes被誉为蘑菇定律式成长的典范,但它也有一些难以消除的问题,比如在开发人员体验方面就有很多问题需要解决,尤其是在企业环境中,而且这已经不是什么秘密了。可观测性服务提供商New Relic的产品经理JF Joly解释道:“事情总是这样的,当一项新技术非常吸引人并且对开发人员很有帮助时,一开始上手都是很快的,但随后当你进行大规模部署时,缺点就开始随之出现了。”

对于一个刚接触Kubernetes的开发人员来说,在他或她的笔记本上调出一个集群看起来似乎很简单。Canonical的产品经理Ammar Naqvi解释说:“当你开始在公有云里,谈论成千上万的节点和成千上万的集群时,难度就会成指数的增长。”

开发人员已经找到一些开包即用的Kubernetes套件。一方面,它简化了复杂应用程序的准备和管理。但另一方面,它也可以快速地将开发人员投入到一种地狱模式的配置场景中,并且尽管这可能不是Kubernetes本身架构混乱的错,而是因为不同的IT团队很难将其融合到现有的运维体系中。

那么,开发人员使用Kubernetes的真实情况到底是怎样的呢?

不同类型的开发人员

描述Kubernetes的开发人员体验的第一件事是,他们不是一个统一的群体。Java开发人员的日常工作流程与Python开发人员就不一样。“我们倾向于说,没有单一的开发人员体验,”Red Hat的产品战略高级总监Brian Gracely解释说,“我们发现的第二件事是,一些开发人员根本不关心Container或Kubernetes,他们只想编写程序。因为,在较大的组织中,他们的开发人员可能真的不需要关心它。”根据Joly的说法,当New Relic迁移到Kubernetes时,开发人员受到的影响很小,因为负责管理Kubernetes的是另一个平台团队。他说:“有很多正在进行功能开发的人,他们与Kubernetes并没有直接的联系,对他们来说Mesos和Kubernetes之间看不出有什么变化。”这种情况是他在New Relic的许多客户身上看到的,特别是那些大型的、技术复杂的、高度专业化的组织。

分析师Janakiram MSV在接受The New Stack的播客采访中说到,Kubernetes所面临的诸多挑战之一是,缺乏一个统一界面的“平台”。相比之下,另一种基础设施技术——虚拟机(Virtual Machine)技术,VM通过一组复杂的技术为最终用户提供了有价值的服务,使最终用户得到无缝、清晰的体验。Kubernetes虽然也能够提供价值,但依然没有出现一个能让开发人员可以轻松理解,且足够清晰的抽象概念。“Kubernetes的所处的位置,更倾向于基础设施层,”他表示,“Kubernetes并没有向它的消费者(consumer)提供任何开发者体验或用户体验。”因为,Kubernetes最初是为集群管理员设计的。但是今天,它已经从一个基础设施工具变成了用来管理工作负载的一整套平台。“但基础设施之上关键的一层缺失了。”

入门

当然,有许多开发人员希望并且需要在生产环境中熟练使用Kubernetes。学习使用Kubernetes并不一定容易。Kubernetes培训公司Magic Sandbox的首席技术官Mislav Stipetic表示:“大多数文档都是‘hello world’级别的。当你在处理一个有状态、有高级网络、有安全需求的应用程序时,唯一的学习途径是从大量媒体文章中深挖探究。”

与此同时,这方面的专家现在并不多。Stipetic说:“我们曾经在网站上做了一项调查,让人们对Kubernetes的知识技能打分,从1分到10分。Kubernetes的一位创始人填写了这张表,他给自己的知识打了七八分。”

“挑战永不会停止”,Naqvi深表赞同的说,“至少以我个人的经验:如果你独自摆弄一套Vanilla Kubernetes,学习曲线是恒定的,这和学习其他事物是一样的。”

当开发人员开始使用Kubernetes时,有一套全新的术语需要学习,而且刚入门的时候,通常第一个挑战就是理解所有东西是如何相互关联的。Platform9的首席技术官Roopak Parikh解释道:“我们看到的另一个挑战是如何理解不可变的基础架构,意思是,你不能事后再去修改配置文件。”

配置蓝图

配置管理是开发人员在使用Vanilla Kubernetes时一个常见的问题。Naqvi解释说:“即使你是一位经验丰富的开发人员,能确保所有配置都是正确的也是相当具有挑战性的。你很难让所有的组件与现有的堆栈完美匹配。”

你的基础设施中包含的组件越多,意味着Kubernetes部署的规模就越大,管理配置就会越具有挑战性。Naqvi说:“如果你想在Kubernetes部署中做一些有价值的事,你需要更多的基础设施组件。”把他们配置好,且无bug,是很有挑战的。

在Vanilla Kubernetes中,很多新用户不知道如何将Kubernetes与CI/CD系统集成。而且,根据Joly的说法,这通常是托管服务供应商来提供的,这对New Relic的众多客户来说是一个巨大的好处。他表示,“我们的客户对GKE或EKS等管理服务的需求确实很大。通过我们提供的服务,降低了他们的障碍。”

在某些方面,Kubernetes的挑战源于闪电般的采用。Joly见过许多公司没有花时间制定架构策略,也没有为如何规范Kubernetes制定蓝图,从而导致混乱,因为多个不标准的Kubernetes部署被胡乱地拼凑在一起。也有一些情况下,对于某些新的开发人员,他们在对Kubernetes运行所需的基本模块还没有清晰了解的情况下,就仓促进入从而导致各种混乱。Kubernetes中,所有的抽象概念层对于规模部署都是非常重要的,但是对于那些只想快速测试某些模块的开发人员来说,这些抽象层似乎会分散他们的注意力。

另一个常见的痛点是对系统的可见性,或者更简单一点说,如何将所有的东西组合在一起。Joly表示:“我们内部在开始与Kubernetes合作时就发现了这一点,在没有客户的情况下也是如此。理解事物之间如何进行联系是一个巨大的挑战。所以说,如果一个节点有问题,那么我的应用中的哪个实例会受到影响呢?“

体制问题

另一方面,企业想引入Kubernetes,最大的学习曲线之一很可能是来自组织结构方面的。如果公司不是去建立一个新的平台团队去管理Kubernetes,而只是使用现有的基础设施团队,并让他们负责这个新的基础设施。这会违背了这个团队迄今一直在被考核的标准——稳定性和高可用性。要知道,稳定性和高可用性通常意味着尽量不要改变。Gracely说:“我们通常看到那些在Kubernetes取得成功的公司,他们一般会把Kubernetes与那些需要频繁迁移的新应用一起挂钩。所以我们在设计时应该考虑到环境是会经常变化的。”

对于某些开发人员来说,这可能也是一个费力不讨好的工作。Stipetic说:“你甚至都不会因为这种转变而获得奖励,因为这是一种看不见的工作。人员和知识的储备方面必须要做出改变,通常来讲,任何事在看到结果之前都需要付出相当多的努力。”

回报

Kubernetes能被如此迅速地采用的事实表明,反复地讨论开发人员体验,肯定会是值得的。“Kubernetes让简单的事情更简单,让困难的事情成为可能,”Stipetic如是说。开发人员一旦熟悉了Kubernetes,那些高级的机制就会使工作变得更容易。Kubernetes还为整个组织创建了处理容器编排的标准方法,这使团队里的新成员会更容易上手。Joly说:“Kubernetes在编排、资源高效利用和快速市场化方面提供了前所未有的价值。”

图片由Pixabay的skeeze提供。

原文链接: https://thenewstack.io/reality ... etes/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK