2014年Docker问世掀起了云原生浪潮,隔年,Google就发表了Kubernetes(简称K8s)。Google主任工程师Janet Kuo正是在2015那一年加入了K8s团队,是这个平台第一代推手之ㄧ,一路参与至今。
2015年,Janet刚进入Google要选择部门时,遇到Kubernetes(简称K8s)团队开始招募人手。K8s创办人告诉Janet,如果加入这个部门,不只能改变全世界执行云端运算的方式,让AP更有效率,自己开发的程式码,还可以在全世界的机器上执行。
听到这个新专案将有极大的影响力,Janet决定加入。当时K8s团队约30人规模,分散在矽谷、西雅图和华沙三个据点。在数万名员工的Google中,这是一个很小的团队,没想到却打造出了一个影响全世界云端产业的关键平台。
K8s部门下设立了不同的SIG(兴趣小组),各自负责开发不同功能的元件,Janet是Application SIG小组的主席和技术领导人。这个小组主要负责维护Workload API,还有开发者部署常用的Deployment元件和Jobs元件等。Janet也曾担任过KubeCon总召,要负责规画该年活动所有的演讲。
K8s近10年最大贡献是成为云原生技术的共通标准
Janet观察,Kubernetes近十年来最重要的贡献是,让任何部署都可以很容易转移。因为K8s提供了一个一致的标准,不用考虑在哪一朵云或是在哪一种环境中执行,让AP从一个环境很容易就可以转移到任何一个环境。
K8s现在可以支援从云到端各种不同的环境,来提供统一的管理。有一个云端供应商的SIG,就是想办法确保K8s对各种环境都是中立,不偏袒任何一家。一方面会有相容测试来确保每一家业者的K8s服务或K8s环境,都能提供主要核心功能。另一方面,K8s专案也会将个别云端业者维护的程式,移出K8s核心,确保核心没有一个限定云端使用的程式,来确保K8s的通用性,不会受限於云。这是为了让K8s可以适应各种更复杂的环境。「K8s所有的东西都是开源,想要自己改就能动手。正因为开源,就不会偏袒任何一方,也才确保使用者优先的立场。」Janet指出。
随着越来越多人用,K8s成了业界逼准,也让企业更容易招募人才,甚至连云原生Cloud Native这个词都是在Kubernetes诞生後才出现。现在基於Kubernetes架构上可能多达数百款云原生工具或技术,涵盖了打造一只AP所需要的每一层工具,例如不同服务之间沟通的Service Mesh或是用来打造Serverless服务的工具都有。开发工程师不用熟悉大量细节,就能打造出一只Serverless应用。「从底层控制,到最上层,都可以用同一个框架。」她补充。
有了这样一套云原生技术的共通标准,所有AP只要用云原生方式,就能相互沟通,也能有很好的整合。如此一来,Janet表示,只要使用Kubernetes,所有使用者和开发者,都可以更有效率地部署程式码,不只可以加速企业开发速度,各种新应用和新技术的发展脚步也可以更快。
「大家都熟悉同一套技术,用来搭建API的工具更可以重复使用,」这正是K8s带来的另一个重要价值,她解释:「容易扩充,任何人都可以在这个平台上打造自己要的API,订定自己要的维运逻辑。」这个特性也促成K8s周边的生态圈非常发达,任何人很容易就能利用其他人开发的建置工具。
为何K8s可以成为打造任何平台的万用平台
首次来台在Kubernetes summit开场主题演讲时,Janet特别推荐K8s的API工具,这是用来打造客制化API,操作丛集的机制,称为Kubernetes API,很容易就可以快速打造出一支客制化API,与K8s後端丛集互动。「这个工具最重要的意义是,提供了一种标准化的API产生方式,也是一种快速扩充的工具,这是发展生态圈的重要基础。」她强调。
「Kubernetes API改变了人们打造平台的方式。」Janet指出。她指的平台,像是维运人员或是SRE所打造的平台,如企业维运平台,或是内部开发者平台,可以让开发者更快速部署自家AP,不用从头打造AP运作底层的每一个细节。这类平台会提供像是应用程式验证、AP范本、部署样板等,让开发团队参考,也可以预先考虑基础架构的资安机制来设计等。「在K8s问世前,要打造这类的基础架构维运平台非常复杂也相当耗时。」她补充。
Janet指出:「Kubernetes能够成为一个可以打造任何平台的平台,关键就是透过Kubernetes API来管理自己的AP,也能结合企业政策,更能管理AP背後的基础架构,建立自动化管理又容易扩充的维运平台。」
原本K8s的核心API约可以满足8成常见维运的需求,若企业想要增加需要的客制化功能,一是向社群提出新功能提案,慢慢等待社群的释出。另一个作法是用Aggregated API Server来自己开发一只专属API,「这个做法很有弹性,但相对复杂许多。」Janet补充。
K8s客制化API最常用也是最推荐的作法
她推荐的是第三种方法,这也是最多人采用的做法,就是使用CustomResourceDefinition API(简称CRD API)来定义一只Kubernetes API,成为Kubernetes API Server可以管理的延伸API之一。
CRD API也是K8s内建API,只要定义好API的资料架构,很快就能建立一只新的API,更关键的是,「这只客制化API,用起来就像是K8s内建的API,」她补充,如可以支援多版本功能,让开发者自行选择要用的版本。透过CRD API产生的API还能与Kubectl整合,直接在命令列中呼叫。更关键的是,透过CRD定义的API,容易与K8s生态圈其他的产品整合。许多K8s生态圈的产品,例如无伺服器框架Knative,都是透过CRD来打造产品的API。
这个K8s API很适合用於发展开发者平台,企业需要快速产生各种API来操作他们的AP,只要定义了资源,撰写出控制器,可以简化一只API的开发,甚至可以切换到不同资源的环境中使用。从维运角度来看,透过K8s API可以提供一个标准的API产生框架,开发者平台若能让开发人员透过同一套标准化方式和管道,来产生新的API,就更容易打造一个自助式的内部API管理平台,可以让维运人员更有效率,也能够让AP开发人力更聚焦在商业逻辑。
K8s发展战略转向:从底层调度转向应用层,GAI优化是新方向
Kubernetes的版本发展速度很快,今年底很快就会释出1.29版。身为K8s核心的Application元件小组技术领导者,Janet透露:「未来最大的发展方向是,如何让K8s更有效率也更有扩充性。对於新崛起的生成式AI的工作负载,也要思考如何提供更好支援。」
追求更好的效率和扩充性,是K8s一直以来的发展目标,但是,提供生成式AI(GAI)更好的支援,则是今年开始的新方向。例如在Janet所领导的Application小组正在规画,如何调整K8s的Jobs API,让ML工作量在K8s执行得更顺利。
「K8s的发展已经从运算资源的调度,开始延伸思考到应用目标,」Janet强调:「这是K8s发展战略上很大的改变,从底层转到应用层。」K8s开始针对特定情境的应用,尤其是未来非常重要的应用,例如GAI运算的支援,将是K8s未来2年的重要方向。
K8s既有的设计,还没有考虑到GAI运算任务特性来优化。例如AI/ML运算任务之间需要传递参数资料,K8s有个可用於一次性处理或批次平行处理任务的Jobs功能,采取了无态式处理的设计,「不同Jobs之间无法传递状态,就不适合用来处理AI/ML运算。」Janet坦言,开发者通常得自己得花额外力气,自己处理这个问题。
虽然开发者可以在K8s平台之外自行传递Jobs的状态,「若能在K8s底层,提供这类Jobs间的状态传递能力,K8s就能更容易支援AI/ML工作流程,或是支援不断迭代的AI训练方式。」
Janet提出另一个支援AI/ML运算的K8s优化方向是,考虑增加Jobs底层的Log机制,让K8s维运人员更容易搜集这些Jobs的执行数据来优化效能,可以用来支援特别讲究效能的AI任务。「K8s希望让AI工作量更有效率地在K8s上执行,也想让Jobs API支援各种AI工作量的需求。」
不过,Janet坦言,K8s核心不会引进生成式AI技术,而是,她认为,GAI可以协助来产生更有效率的k8s配置,也很适合用於学习K8s。例如可以自动生成YAML配置档的维运AI助手,成为K8s学习助理,或是用AI来推荐K8s工具。「不少人抱怨K8s太难学了,我希望GAI可以降低K8s的上手门槛。」未来甚至使用者只要说,帮我建置什麽样的Ap,在哪里执行,GAI就可以自动产生相关的配置,甚至自动建立相关的丛集。
2015年,Janet这位第一代K8s团队推手刚加入时,最苦恼的是当年没有人想用K8s,她的团队花了一年到处说服和寻找使用案例。直到2016年,Pokémon GO游戏爆红,上市两个月下载量超过5亿次。
虽然直到2023年,不论Google或是Niantic,都没有透露Pokémon Go到底用了多少伺服器来撑住爆量玩家的连线和运算需求,只透露比原本预期的最大流量,还暴增了50倍。
但在Pokémon Go正式上线的同一天(2016年7月6日),Kubernetes发布了1.3版,单一容器丛集可以支援到2千个节点,最多可支援6万个Pod丛集,相当於最大可以提供到1.2亿个容器。
Janet没有透露更多细节只说,这个游戏完全在K8s上执行,他们是第一个案例,也是有史以来的最大规模的K8s丛集。好不容易才说服他们愿意公开,让Google对外宣传。大家才知道,原来Kubernetes可以处理到这麽庞大的流量,而且是来自全球使用者。
当时才数十人规模的K8s团队全都派去支援Niantic,连Janet也不例外。「对外公开那一刻,我觉得参与K8s的打造,真的是太好了,那是我最有成就感的一刻。」文王宏仁