Kubernetes学习总结(6)——Kubernetes 7周年:它为什么如此受欢迎?
今年 6 月 7 日,Kubernetes 迎来 7 周年。七年前,当谷歌宣布 Kubernetes 项目时,谁也不曾想到它会取得如此大的成功。作为后起之秀,Kubernetes 打败了 Docker,成为容器编程领域的事实标准,改变了整个容器市场的格局。当今,Kubernetes 已经成为广受认可的基础设施领域工业标准,变成云计算平台上的主角。
在 Kubernetes 七周年之际,InfoQ 采访了项目创始人 Craig McLuckie 和 Joe Beda,与他们聊了聊 Kubernetes 的过去、现在和未来。
Kubernetes 创始人、VMware 应用现代化业务部门研发副总裁 Craig McLuckie 说:“我们看到,Kubernetes 在过去七年历程中精彩纷呈。它从最初我们两个人非常大胆的想法,到今天已经发展成有很多发行版的技术。这确实是一段不可思议的历程。”
源于 Project 7
对 Kubernetes 来说,七周年很独特,Craig McLuckie 称“特别强调一下 Kubernetes 的七岁生日是一个非常特殊的生日”,因为 Kubernetes 最初在谷歌内部起步时,该项目名称就叫 Project 7(七号项目)。
Kubernetes 创始人、VMware 首席工程师 Joe Beda
据 Kubernetes 创始人、VMware 首席工程师 Joe Beda 解释,这个名字是来自于科幻电影《Star Trek》(中文“星际迷航”)提供的灵感。
但是,在后来发展过程中,由于“谷歌律师提出了不同意见”,所以谷歌无法对外继续使用 Project 7 这个名称。因此,该项目被改名叫 Kubernetes。
据两位创始人介绍,Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。他们表示,“说实话,我们之所以选择这个词,很大一部分原因是很难找到另一个可以让谷歌法律团队批准的名字”。同时,Kubernetes 有时缩写为 K8s,这是因为 K 和 s 之间有八个字符的关系。
据悉,Kubernetes 建立在谷歌大规模运行生产工作负载十几年的经验基础上。它源自 Borg,在谷歌用 Go 语言对它重写后,最终取名 Kubernetes。2014 年,谷歌正式开源 Kubernetes 项目。
为什么选择开源 Kubernetes 项目?
他们称,“我们希望把 Borg 的经验分享给谷歌之外的人,因此把它变成一个开源项目是最好的选择。我们想要的是一种共享方式,与社区分享我们在如何开发分布式应用程序方面的专业知识。除了公司在其数据中心运行的物理机外,还可以更有效地跨云服务运行代码。”
之后,CNCF(云原生计算基金会)成立,微软、亚马逊云科技和甲骨文以及 Red Hat、英特尔、IBM 等纷纷加入,Kubernetes 走上快车道。
企业青睐,挑战也随之而来
根据 VMware《2021 年 Kubernetes 状态报告》显示,持续转向生产成为 Kubernetes 乘风破浪的一个重要标志,从 2020 年报告的 59% 增长到今年的 65%。并且拥有超过 500 名开发人员的公司更倾向于在生产环境中运行所有或大部分容器化工作负载(78%)。
在两位创始人看来,一旦投入运营,企业组织可能会享受到诸多益处,包括提高资源利用率、简化应用程序升级和维护等,“这两个关键 KPI 对业务成果都有着重大影响”。
他们说:“不仅如此,Kubernetes 确实是一个庞大生态系统的重要支柱,赋能许多公司,许多项目围绕其成立并展开。”
Kubernetes 的采用率持续上升,这意味着它已经稳步进入企业生产环境,并逐步成为 IT 主流。与此同时,企业还要面对 Kubernetes 带来的挑战。
Kubernetes 创始人、VMware 应用现代化业务部门研发副总裁 Craig McLuckie
Craig McLuckie 指出,Kubernetes 的成功是伴随着越来越多人的使用而不断向前发展。它之所以成功的一个重要方面是因为围绕 Kubernetes 出现了大量创新,这些创新在帮助用户解决实实在在的问题。不过,众多的创新也为企业带来它们必须要梳理清楚的复杂性和挑战。
据他介绍,企业部署 Kubernetes 的复杂性主要体现在两个方面:
一是如何以一种可扩展的方式迅速地运行操作 Kubernetes;
二是如何让广大的开发人员能轻而易举地用上 Kubernetes。
挑战中也蕴藏着机会。Craig McLuckie 和 Joe Beda 在 2016 年 11 月联合创立 Heptio 公司,其中,Craig McLuckie 担任 CEO,Joe Beda 担任 CTO,公司致力于提供专业服务来帮助企业建立和维护由 Kubernetes 提供支持的大型容器环境。2 年后,VMware 收购该公司,Craig McLuckie 和 Joe Beda 也进入 VMware 工作。
Craig McLuckie 在采访中向 InfoQ 解释,整个 Kubernetes 的使用呈现指数级增长,“我们与之打交道的每一个企业都在以某种方式部署 Kubernetes,但很多企业的使用方式与我们最初的想象不一样”,这些企业以一种更加精细粒度的方式部署 Kubernetes,比如构建了很多规模较小的 Kubernetes 集群。
这样一种部署模式带来的最大挑战之一是企业有了自建的 Kubernetes 集群后,其自身内部能力却未及时跟上,无法对这些集群进行接近实时的升级,即它们的集群无法最快地通过 Kubernetes 上游项目中的各种创新来进行更新和升级。
这一方面给它们带来了安全上的隐患,另一方面,也让它们部署的 Kubernetes 系统无法获取整个开源社区生机勃勃的创新来源。
在 Craig McLuckie 看来,Kubernetes 和其它基础设施技术的一个缺点是,它往往是应用程序开发的重点,而非推动者。Kubernetes 应该成为开发人员畅游的海洋,但实际状况却是它仍未达到期望中易于运行的程度。
VMware 的《2021 年 Kubernetes 状态报告》回应了这一观点,超过一半(55%)的受访者表示,在做出选择时,缺乏内部经验和专业知识是最大的挑战。
与此同时,Kubernetes 安全性是大多数组织(实际高达 97%)面临的一个显著问题,并且需要采用 DevSecOps 实践来确保在端到端容器生命周期中增强安全性。
Kubernetes 成功的核心
某种程度上,Kubernetes 的快速发展和壮大与背后的社区息息相关。
据两位创始人介绍,在 Kubernetes 项目早期,社区有很多来自不同方向的、伟大的创新想法。“我们无法将它们全部融入到项目中并持续提高可靠性,也不希望项目本身阻碍人们使用 Kubernetes”。
因此,他们专注于构建可扩展性的机会,这意味着人们可以构建和扩展 Kubernetes,无需与 Kubernetes 项目本身进行协调。这在很大程度上推动了更广泛生态系统的发展。
实际上,他们一开始就把 Kubernetes 做成一个以社区为中心的项目。在 Kubernetes 发展过程中,既有谷歌的项目,也有来自 VMware、IBM 和 Red Hat 等很多参与者的想法。
Craig McLuckie 和 Joe Beda 强调,“Kubernetes 今天的成功是后期由整个社区开发者携手努力做到的。社区不仅带来了广泛且深刻的经验和视角,而且帮助释放开源社区的创新”。
“独行快,众行远”,这或许才是 Kubernetes 成功的关键。
此外,良好的扩展性、Kubernetes 新版本引入的新功能让集群运营者在运行各种不同工作负载时有更大的灵活性:这些因素使得 Kubernetes 越来越受欢迎。
对于 Kubernetes 的成功,Craig McLuckie 这样概括:
一是因为 Kubernetes 诞生在一个云服务供应商的内部,所以一开始就知道它将来会有怎样的发展潜力,应该向什么方向发展。打个比方,就像玩拼图的游戏,我们不光有做这个拼图需要的所有的块,而且我们还有它最后的那张图纸。二是 Kubernetes 一开始就是一个以社区为中心的项目,除了谷歌,它还吸纳了 VMware、IBM、Red Hat 等很多参与者的想法,所以 Kubernetes 在发展过程中具备非常广泛、深刻多样的各种经验和视角。因此,它如今具备非常深刻且强大的力量和价值。
针对 Kubernetes 目前的成绩,两位创始人表示,“Kubernetes 已经走过七年,但我们认为它作为一个社区,仍处于起步阶段”。
他们说:“我们还有大量且非常精彩的工作要去做。不仅仅让 Kubernetes 从操作运维角度来说更加简单易用,而且还要通过 Kubernetes 把基于 Kubernetes 的整个开源社区的创新充分释放出来。”
谈到 Kubernetes 的未来,他们“想让 Kubernetes 变得’无聊乏味‘,让它足够可靠,嵌入生态系统中。这样,它就真的像我们以抽象概念所描述的基础设施一样,自然地成为工作的组成部分,如同消失一般融入在框架中,人们无需额外考虑它的存在”。
其次,让 Kubernetes 变得更具内在弹性、可扩展性和开发人员可访问性。他们指出,Kubernetes 旅程的下一阶段是为团队提供更丰富的自助服务体验,即如何使 Kubernetes 成为开始构建自助服务供应和自助服务消费体验的容器,以补充公有云。
他们表示,“展望未来,我们还认为更激动人心的事取决于围绕 Kubernetes 形成的更大的生态系统。借助 VMware Tanzu,我们帮助用户利用 Kubernetes 更快速地取得成功,同时为他们敞开大门,利用更广泛的生态系统进一步赋能”。注:VMware 在 2019 年发布 Tanzu,它是用于实现应用程序和基础架构现代化升级的产品和服务组合,目标是持续不断地为生产提供更好的软件。它为开发人员提供一种自由,能将应用交付至任意云端,采用 Kubernetes 不再有障碍,并帮助 IT 管理员转换技能,为新一轮的现代化应用提供支持。
开源与工作倦怠
在 Craig McLuckie 和 Joe Beda 看来,新冠疫情推动了开发人员、企业与开源技术的互动加速。同时,开源被视为创新和创意孵化的重要来源,并且一直是很多企业组织的主要焦点。
Joe Beda 说:“就个人而言,我最近在开源上花的时间并不多。我大部分时间在学习并了解 Kubernetes 生态系统中正在发生的事情(通过我的 Youtube 频道直播——tgik.io 上的 TGIK),并支持 Tanzu 的其他团队与开源社区合作,提供建议。”
在开源行业,项目维护正变得日益艰难。在他们看来,工作倦怠(burn out) 是开源世界中一个非常现实的问题,”且时刻出现在我们面前“。
他们说:“我们采取的方法是确保有明确的项目目标,并充分明晰其如何为我们更大的业务目标发挥锦上添花的作用。这使我们能确保为这些项目提供适当的资金,并为该项目与社区设定正确的期望。致力于我们的参与可持续性,有望创造合适的环境来防止维护者精疲力尽。”
最后,在谈到开发者平衡工作和生活上时,Joe Beda 表示,真正的 10 倍效率开发者是那些让周围的人变得更好的人。软件开发(无论是否开源)从根本上说是一项团队活动。
他说:“我认为,在你的开发职业生涯中成长的真正途径是找到与你的同事更巧妙合作的方法,做一些没人能做到的惊人的事情。如果你能将境况调整至合适的状态,它将是可持续的,并创造惊人的结果。”
Kubernetes学习总结(6)——Kubernetes 7周年:它为什么如此受欢迎?相关推荐
- Kubernetes学习笔记三:Docker安装,Docker使用,编写Dockerfile,制作容器镜像,上传docker镜像
文章目录 Docker的安装 Docker的使用:docker run命令 查看本地存在的镜像:docker images命令 编写Dockerfile,制作容器镜像 docker build制作镜像 ...
- Kubernetes学习笔记二:Namespace,Cgroups 的隔离与应用
Kubernetes学习系列文章:Kubernetes-博客专栏 今天在学习极客时间专栏:<深入剖析Kubernetes> 第五讲05 | 白话容器基础(一):从进程说开去和第六讲06 | ...
- Kubernetes学习笔记一:Docker和Kubernetes的诞生
Kubernetes学习系列文章:Kubernetes-博客专栏 今天在学习极客时间专栏:<深入剖析Kubernetes> 里面的01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐到04 ...
- Kubernetes学习笔记(一)
2019独角兽企业重金招聘Python工程师标准>>> Kubernetes学习笔记(一) 博客分类: Kubernetes 导语 2015年4月,传闻已久的Borg论文伴随Kube ...
- kubernetes学习笔记 (二):k8s初体验
本文采用本地k8s v1.10.3版本开发,如果还没有搭建可参照 kubernetes学习笔记 (一):搭建本地k8s开发环境进行搭建 搭建本地Docker镜像仓库 docker pull docke ...
- Kubernetes学习笔记之Calico CNI Plugin源码解析(一)
女主宣言 今天小编为大家分享Kubernets Calico CNI Plugin的源码学习笔记,希望对正在学习k8s相关部分的同学有所帮助: PS:丰富的一线技术.多元化的表现形式,尽在" ...
- Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere
前言 Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式.他们都是为了降低 k8s 集群运维复杂度,降低运 ...
- Kubernetes学习总结(16)—— Kubernetes 实战之部署 Redis 集群
一.问题分析 本质上来说在 k8s 上部署一个 redis 集群和部署一个普通应用没有什么太大的区别,但需要注意下面几个问题: Redis 是一个有状态应用:这是部署 redis 集群时我们最需要注意 ...
- Kubernetes学习总结(12)—— 学习 kubernetes 的10个技巧或建议
一.学 GO 语言 Kubernetes是基于 GO 编写的,所有的组件都是基于 GO 编写的,kubernetes甚至使用GO编写了一个客户端.学习使用 GO 语言编写的 Kubernetes 客户 ...
最新文章
- js 字符串操作函数
- 机器学习系列之手把手教你实现一个决策树
- Mysql 死锁过程及案例详解之清空缓存锁Flush Lock
- linux添加zip扩展
- 端口映射 - 专业术语 - 发问篇
- 中文数字转换为阿拉伯数字
- SQL Server中Text和varchar(max)数据类型区别
- BZOJ5092:[Lydsy1711月赛]分割序列(贪心,高维前缀和)
- Tomcat 部署多个项目出现错误
- Java内部类访问局部变量时的final问题
- android常用字体代码,Android TextView设置字体风格多种组合
- 如何将pdf转换成word的3种免费方法
- 织梦图集php,采集功能的使用方法 --- 图片集(一)
- 时间(空间)复杂度 O(N) 的理解
- CSS实现的带头像的彩色垂直菜单源码
- 绿蓝色悖论(新归纳之谜)?
- OpenAI完胜DOTA世界冠军,20行python代码带你领略其魅力
- 【读书笔记】《红玫瑰与白玫瑰》
- IOS 屏幕适配理论篇
- SQLite实用武器库(1)利用dump命令和read命令导出数据、导入数据
热门文章
- ubuntu 64 12.04 oracle,Ubuntu 12.04 (amd64)安装Oracle 11g 总结
- php 发送文本 设置头,php中header设置常见文件类型的content-type
- python之父的名字-Python 常见双下划线关键字的用法
- 软件测试学生管理系统课程设计,软件测试课程设计-ERP进销存管理系统(1)
- react 使用rem布局_react如何使用rem适配
- scrcpy设置快捷键_scrcpy——Android投屏神器(使用教程)
- 回填用土好还是砂石料好_养猪用颗粒料好还是自配料好?其实各有优劣,养猪人要会选择...
- PHP数据layui表格,基于layui和thinkphp数据表格的数据接口,layui表格局部刷新
- 算法 c语言_C语言中10个经典的算法,学会它,利用它
- java poi生.docx_java – Apache POI或docx4j处理docx文件