kubernetes生态系统与演进路线

博文视点 博文视点     2022-12-31     285

关键词:

Kubernetes 的快速演进大大推进了云计算技术的发展,伴随着云原生计算基金会CNCF的诞生、云原生开源项目的孵化,逐渐演化成一个完整的云原生技术生态系统。

本文就来介绍一下Kubernetes与CNCF的关系、Kubernetes演进路线和Kubernetes开发模式。

01

Kubernetes与CNCF
云原生计算的特点是使用开源软件技术栈,将应用程序以微服务的形式进行发布和部署,并动态编排这些微服务,优化资源使用率,帮助软件开发人员更快地构建出色的产品,进而提升业务服务的快速迭代与创新价值。
Kubernetes作为CNCF的第一个开源项目,其智能的服务调度能力可以让开发人员在构建云原生应用时更加关注业务代码而不是烦琐的运维操作,Kubernetes可以在本地或云端运行,让用户不再担心基础设施被供应商或云提供商绑定。

围绕Kubernetes,CNCF设计了云原生技术的全景图,从云原生的层次结构和不同的功能维度上给出了云原生技术体系的全貌,帮助用户在不同的层面选择适合的软件和工具进行支持。

随着越来越多的开源项目在CNCF毕业,云原生技术的生态系统日趋完善,用户可以选择的工具也越来越丰富。经过了从 2014 年开源至今的快速发展,Kubernetes已经成为整个云原生体系的基石,在云原生技术全景图中,可以看到Kubernetes处于编排管理工具的核心位置,相当于云原生技术体系中操作系统的角色。

同时,CNCF为云原生技术如何在生产环境中落地提供了循序渐进的路线图,如图1所示。

图1 CNCF云原生技术路线图

CNCF现在在中国有近50个成员,中国还是CNCF项目的第三大贡献者(按贡献者和提交者计),仅次于美国和德国。

在CNCF于2020年年初发布的全球云原生调查报告中,84%的受访者在生产环境中使用容器,容器在生产环境中的使用已成为常态,并且在很大程度上改变了基于云的基础架构。

同时,针对中国的第三次云原生应用调查报备显示:49%的受访者在生产环境中使用容器,另有32%计划这样做,与一年前相比,这是一个显著的增长;同时,72%的受访者已经在生产环境中使用Kubernetes,大大高于一年前的40%。

图2显示了大规模生产环境中Kubernetes集群数量逐年增长的趋势。

图2 Kubernetes集群数量逐年增长的趋势

02

Kubernetes的演进路线
▊ Kubernetes与CNCF的容器标准化之路
在CNCF的生态中,围绕着Kubernetes的一个重要目标是制定容器世界的标准。迄今为止,已经在容器运行时、容器网络接口、容器存储接口三个方面制定了标准的接口规范。

◎ CRI(Container Runtime Interface)容器运行时接口。容器运行时(Container Runtime)是Kubernetes的基石,而Docker是我们最熟悉的容器运行环境。CNCF第一个标准化的符合OCI规范的核心容器运行时是Containerd,其来源于Docker在2017年的捐赠产物,关于CRI的详细说明请参考2.7节的说明。

◎ CNI(Container Network Interface)容器网络接口。网络提供商基于CNI接口规范提供容器网络的实现,可以支持各种丰富的容器网络管理功能,开源的实现包括Flannel、Calico、Open vSwitch等,关于CNI的详细说明请参考7.6节的说明。

◎ CSI(Container Storage Interface)容器存储接口。Kubernetes在1.9版本中首次引入CSI存储插件,并在随后的1.10版本中默认启用。CSI用于在Kubernetes与第三方存储系统间建立一套标准的存储调用接口,并将位于Kubernetes系统内部的存储卷相关的代码剥离出来,从而简化核心代码并提升系统的安全性,同时借助CSI接口和插件机制,实现各类丰富的存储卷的支持,赢得更多存储厂商的跟进。Kubernetes在1.12版本中又进一步实现了存储卷的快照(VolumeSnapshot)这一高级特性。

◎ API标准接口。我们再看一个Kubernetes标准化的例子,API Server之前的接口就是普通的RESTful接口,通过支持Swagger 1.2自动生成各种语言的客户端,方便开发者调用Kubernetes的API。从Kubernetes 1.4版本开始,API Server对代码进行了重构,引入了Open API规范,之后的Kubernetes 1.5版本能很好地支持由Kubernetes 源码自动生成其他语言的客户端代码。这种改动升级对于Kubernetes的发展、壮大很重要,它遵循了业界的标准,更容易对接第三方资源和系统,从而进一步扩大Kubernetes的影响力。

▊ Kubernetes安全机制的演进之路

除了标准化,Kubernetes的另一个演进目标就是提升系统的安全性。自1.3版本开始,Kubernetes都在加强系统的安全性,如下所述。

◎ 1.3版本:引入了Network Policy,Network Policy提供了基于策略的网络控制,用于隔离应用并减少攻击面,属于重要的基础设施方面的安全保障。

◎ 1.4版本:开始提供Pod安全策略功能,这是容器安全的重要基础。

◎ 1.5版本:首次引入了基于角色的访问控制RBAC(Role-Based Access Control)安全机制,RBAC后来成为Kubernetes API默认的安全机制,此外添加了对kubelet API访问的认证/授权机制。

◎ 1.6版本:升级RBAC安全机制至Beta版本,通过严格限定系统组件的默认角色,增强了安全保护。

◎ 1.7版本:新增节点授权器Node Authorizer和准入控制插件来限制kubelet对节点、Pod和其对象的访问,确保kubelet具有正确操作所需的最小权限集,即只能操作自身节点上的Pod实例及其他相关资源。在网络安全方面,Network Policy API也升至稳定版本。此外,在审计日志方面也增强了定制化和可扩展性,有助于管理员发现运维过程中可能存在的安全问题。

◎ 1.8版本:基于角色的访问控制RBAC功能正式升级至v1稳定版本,高级审计功能则升级至Beta版本。

◎ 1.10版本开始:增加External Credential Providers,通过调用外部插件(Credential Plugin)来获取用户的访问凭证,用来支持不在Kubernetes中内置的认证协议,如 LDAP、oAuth2、SAML等。此特性主要为了公有云服务商而增加。1.11版本继续改进;1.20版本引入了配套的kubelet image credential provider,用于动态获取镜像仓库的访问凭证。

◎ 1.14版本:由于允许未经身份验证的访问,所以Discovery API被从RBAC基础架构中删除,以提高隐私和安全性。

◎ 1.19版本:seccomp机制更新到GA阶段。

▊ Kubernetes扩展功能的演进之路

在Kubernetes的快速发展演进过程中,随着功能的不断增加,必然带来代码的极速膨胀,因此不断剥离一些核心代码并配合插件机制,实现核心的稳定性并具备很强的外围功能的扩展能力,也是Kubernetes的重要演进方向。

除了CRI、CNI、CSI等可扩展接口,还包括API资源的扩展、云厂商控制器的扩展等。

◎ Kubernetes从1.7版本开始引入扩展API资源的能力,使得开发人员在不修改Kubernetes核心代码的前提下可以对Kubernetes API进行扩展,仍然使用Kubernetes的语法对新增的API进行操作。Kubernetes提供了两种机制供用户扩展API:①使用CRD(Custom Resource Definition)自定义资源机制,用户只需定义CRD,并且提供一个CRD控制器,就能通过Kubernetes的API管理自定义资源对象;②使用API聚合机制,用户通过编写和扩展API Server,就可以对资源进行更细粒度的控制。

◎ 最早的时候,为了跟公有云厂商对接,Kubernetes在代码中内置了Cloud Provider接口,云厂商需要实现自己的Cloud Provider。Kubernetes核心库内置了很多主流云厂商的实现,包括AWS、GCE、Azure等,因为由不同的厂商参与开发,所以这些不同厂商提交的代码质量也影响到Kuberntes的核心代码质量,同时对Kubernetes的迭代和版本发布产生一定程度的影响。因此,在Kubernetes 1.6版本中引入了Cloud Controller Manager(CCM),目的就是最终替代Cloud Provider,将服务提供商的专用代码抽象到独立的cloud-controller-manager二进制程序中,cloud-controller-manager使得云供应商的代码和Kubernetes的代码可以各自独立演化。在后续的版本中,特定于云供应商的代码将由云供应商自行维护,并在运行Kubernetes时链接到cloud-controller-manager。

▊ Kubernetes自动化运维能力的演进之路

在Kubernetes的快速发展演进过程中,架构和运维自动化、高级别的架构和运维自动化能力也是其坚持的核心目标,这也是Kubernetes最强的一面,同时是吸引众多IT人士的核心特性之一。

最早的ReplicaController/Deployment其实就是Kubernetes运维自动化能力的第一次对外展示,因为具备应用全生命周期自我自动修复的能力,所以这个特性成为Kubernetes最早的亮点之一。

再后来,HPA水平自动伸缩功能和集群资源自动扩缩容(Cluster Autoscaler)再次突破了我们所能想到的自动运维的上限。

接下来,与HPA互补的VPA(Pod垂直自动伸缩)功能又将集群运维自动化的水平提升到一个新的高度。

我们看到,从Deployment到HPA再到VPA的发展演进,是沿着Pod自动扩缩容的弹性计算能力的路线一步步演进、完善的,这也是超大规模集群的Kubernetes的核心竞争力的重要体现,未来会不断完善。

除了高级别的架构和运维自动化能力,Kubernetes在常规的运维自动化方面也丝毫没有放松,它在不断提升、演进。

我们以最常见的集群部署、停机检修、升级扩容这些常规运维工作为例来看看Kubernetes是怎么不断演进的。

(1)在集群部署方面,Kubernetes很早就开始研发一键式部署工具——kubeadm,kubeadm可谓Kubernetes历史上最久的组件之一,它于Kubernetes 1.4版本面世,直到Kubernetes 1.13版本时才达到GA阶段。正是有了kubeadm,Kubernetes的安装才变得更加标准化,并大大简化了大规模集群的部署工作量。不过在集群部署方面还存在另一个烦琐并耗费很多人工的地方,这就是每个节点上kubelet的证书制作。Kubernetes 1.4版本引入了一个用于从集群级证书颁发机构(CA)请求证书的API,可以方便地给各个节点上的kubelet进程提供TLS客户端证书,但每个节点上的kubelet进程在安装部署时仍需管理员手工创建并提供证书。Kubernetes在后续的版本中又实现了kubelet TLS Bootstrap这个新特性,基本解决了这个问题。

(2)在停机检修和升级扩容方面,Kubernetes先后实现了滚动升级、节点驱逐、污点标记等配套运维工具,努力实现业务零中断的自动运维操作。

此外,存储资源的运维自动化也是Kubernetes演进的一大方向。以PVC和StorageClass为核心的动态供给PV机制(Dynamic Provisioning)在很大程度上解决了传统方式下存储与架构分离的矛盾,自动创建了合适的PV并将其绑定到PVC上,拥有完善的PV回收机制,全程无须专业的存储管理人员,极大提升了系统架构的完整性。

03

Kubernetes的开发模式
最后,我们来说说Kubernetes的开发模式。Kubernetes社区是以SIG(Special Interest Group,特别兴趣小组)和工作组的形式组织起来的,目前已经成立的SIG小组有30个,涵盖了安全、自动扩缩容、大数据、AWS云、文档、网络、存储、调度、UI、Windows容器等方方面面,为完善Kubernetes的功能群策群力并共同开发。
Kubernetes的每个功能模块都由一个特别兴趣小组负责开发和维护,如图3所示。

图3 特别兴趣小组

有兴趣、有能力的读者可以申请加入感兴趣的SIG小组,并通过Slack聊天频道与来自世界各地的开发组成员开展技术探讨和解决问题。同时,可以参加SIG小组的周例会,共同参与一个功能模块的开发工作。

本文摘自《Kubernetes权威指南》一书,欢迎阅读此书来了解更多Kubernetes相关内容。

▊《Kubernetes权威指南(第5版)》

龚正,吴治辉,闫健勇 著

内容超详尽的K8s指南全新升级至K8s1.19

提供源码下载、勘误及读者群答疑

人人都想拥有的Kubernetes重磅级案头手册

本书总计12章,分别讲解Kubernetes的基本概念、实践指南、核心原理、开发指南、网络与存储、运维指南、新特性演进等内容。全书图文并茂、内容丰富、由浅入深、讲解全面,并围绕在生产环境中可能出现的问题,给出了大量典型案例,比如安全配置方案、网络方案、共享存储方案、高可用方案及Trouble Shooting技巧等,有很强的实战指导意义。

(京东满100减50,快快扫码抢购吧!)

kubernetes平台的生态系统介绍

Kubernetes作为一个容器云管理平台,与底层的基础架构、企业周边的公共服务形成了一个完备的生态系统。如图1所示,一个完备的Kubernetes系统在设计和实现时,需要考虑多层面的高可用性问题。图1 Kubernetes平台的生... 查看详情

2019年,容器技术生态会发生些什么?

1.Kubernetes项目被采纳度将持续增长作为“云原生”(CloudNative)理念落地的核心,Kubernetes项目已经成为了构建容器化平台体系的默认选择。但是,不同于一个只能生产资源的集群管理工具,Kubernetes项目最大的价值,乃在于... 查看详情

chapter7hadoop架构架构演进与生态组件

7.1Hadoop的优化与发展7.1.1Hadoop的局限和不足Hadoop在刚刚推出时,存在很多不足。存在的不足如下:抽象层次低,需人工编码。很多工作没有办法从高层撰写逻辑代码,必须从最底层进行逻辑编码。即使是很简单的... 查看详情

c-v2x行业现状产业化部署与演进路线

本站文章引用或转载写明来源,感谢原作者的辛苦写作,如果有异议或侵权,及时联系我处理,谢谢!更多车路协同,车路协同建设解决方案,参考链接:https://gitee.com/AiShiYuShiJiePingXing/smart-city个人... 查看详情

容器领域软件栈与学习建议路线

...多加关注 生态圈最核心的控制点实际在编排调度层(kubernetes,openstack,mesos,swarm)这其实是PaaS,IaaS的核心点。其属于基础设施层,以此开放能力(CloudService),构筑面向行业的SaaS的基础能力。容器管理这一层分化为两类... 查看详情

中国三大主流开源linux操作系统社区及其产品生态

...长期处于“多、小、散”的状态,未能建立起完善的生态、未能研发出真正好用的操作系统,我国党政机关、企业学校、个人家庭不得不使用国外的CentOS、SUSE、Ubuntu、Redhat、Windows等L2-L4级商业或开源发行版操作系统来满... 查看详情

从建好到用好,阿里云原生微服务生态的演进

...过十年双十一打磨稳定可靠,并且通过开源构建了丰富的生态,目前几乎支持了所有主流语言,并且在过去1年里对Golang微服务生态做了完善的支持,体验大幅提升。2 微服务生态规划在过去的十年里,我们开源了分布式应用... 查看详情

sreworks前端低代码组件生态演进:monorepo架构重构和远程组件加载实践

...多的用户需求,与社区一起共建一个丰富的前端运维组件生态。在过去的半年中,为了让前端组件生态更好地演进,frontend针对“可扩展、方便插拔”这两个关键点进行架构升级:架构层面进行了monorepo模式重构;前端组件支持... 查看详情

kubernetes入门kubernetes学习路线发展历程及重要组件介绍

...keburnetes提供的服务keburnetes的灵活性k8s组件说明bord结构图kubernetes结构图master组件节点(Node)组件k8s发展史k8s是一个分布式资源管理器,在分布式资源管系统发展的过程中出 查看详情

大三学习规划路线图

路线图介绍:本课程对大数据生态系统进行全方位讲解,有hadoop实操与底层原理应用,DFS与MapRedcue的全新解读,内含有全网独家发布的YARN调度框架的底层事件二次分发机制和Google源码级IPC和RPC的通信技术原理与报文字节码级别的... 查看详情

hpc走出全新路线:《开放架构hpc技术与生态白皮书》注解

文|智能相对论作者|叶远风数字经济大时代,创新驱动大环境,HPC已不再是阳春白雪,而受到越来越多人的关注。HPC,即HighPerformanceComputing,高性能计算。对普通人来说,没有听过HPC,但肯定都听过超... 查看详情

明晚九点|发布系统演进与持续集成

主题:发布系统演进与持续集成内容:背景介绍手动发布的阶段自动化阶段---脚本puppet自主研发支持支持容器化持续集成主讲师:萝卜多年go语言开发经验从事自动化运维和基础架构相关工作背景管理什么?用户权限配置文件软... 查看详情

深度解读!阿里统一应用管理架构升级的教训与实践(代码片段)

...目统一架构升级的技术工作。事实上,早在2018年末,当Kubernetes项目正式成为阿里巴巴的应用基础设施底盘之后,阿里内部以及阿里云产品线在应用管理领域的碎片化问题就开始日渐凸显出来。尤其是在云原生生态日新月异的今... 查看详情

嵌入式操作系统与物联网演进之路

...要组成部分,回顾其发展,其中不得不提的必然是嵌入式系统。传统的嵌入式系统与互联网的发展衍生出物联网,而在如今的物联网热潮之下,嵌入式系统也面临着全新的机遇与挑战。那么,两者的碰撞融合究竟会带来怎样的火... 查看详情

架构师之路—部署架构—超大规模负载均衡架构演进

...技术实现运行环境隔离与动态服务管理14、以云平台承载系统超大规模负载均衡架构演进技术路线引入应用和数据分离。引入缓存。引入服务器集群。引入数据库读写分离。引入反向代理和CDN。引入分布式文件系统和分布式数据... 查看详情

监控告警平台的国产化选择—rancher与夜莺的集成(代码片段)

...发总监,一直活跃在研发一线,经历了OpenStack到Kubernetes的技术变革,在底层操作系统Linux、虚拟化KVM和Docker容器技术领域都有丰富的研发和实践经验。通常提到在Kubernetes集群中搭建监控告警平台,普遍的选择都是... 查看详情

kubernetes故障排除三板斧:理解管理和预防

...p;「奇妙的Linux世界」设为「星标」,每天带你玩转Linux!Kubernetes生态系统充斥着各种工具,例如监控、可观察性、跟踪、日志记录等,但一般很难真正理解故障排除与这些工具有何联系。当故障发生时,我们要掌握是从哪里发... 查看详情

边缘计算与产业生态系统

...章目录目录边缘计算产业的参与者边缘计算产业的上下游生态系统边缘计算用例的业务特征边缘计算产业的参与者边缘计算领域参与者众多,主流公司以打造生态优势为目标,基于自身服务层级向产业链上下两端进行拓展,目前... 查看详情