目前,CNCF 社区正持续发展,用户对开源技术的应用也越来越突出。
这是 CNCF 第八次对云原生应用的采用情况进行调研。此次调研,CNCF 收到了来自社区共计 1324 份有效样本,来自欧洲、北美、亚洲等主要地区,其中有 30% 以上是 5000 人规模以上企业,60% 以上为 100 人规模企业和组织。
从被调研对象来看,其中绝大多数为企业IT部门 / 组织,主要岗位包括 SRE/DevOps 工程师(43%)、软件架构师 (35%)和后端开发人员 (23%)。
调研核心要点:
在生产中应用容器的比例从去年的 84% 增长到今年的 92%,相比 2016 年增长了 300%。
生产中应用 Kubernetes 的比例从去年的 78% 增长到今年的 83%。
CNCF 托管的所有项目中,相比上一年投入应用的项目至少有 50% 的增长。
82% 的受访者在生产中应用 CI/CD(持续集成和持续交付)。
30% 的受访者在生产中应用无服务架构(serverless)。
27% 的受访者在生产中应用服务网格(service mesh),相比去年增长了 50%。
55% 的受访者在生产中的容器中运行有状态应用程序(stateful application)。
结论:公有云仍是主流,但私有云在不断增长。
公有云仍是如今最主流的数据中心改造路径,其应用率从去年的 62% 略有增加到 64%;私有云或本地部署应用率从 45% 增加到 52%;混合云从去年的 38% 略有下降到 36%。多云在今年是一种新的策略,其应用率在 26%。
Kubernetes 和云原生工具的可移植性,使得不同云之间的切换变得更加简单。不过多云策略的提升,并不完全能解释混合云应用率下降的原因。
结论:版本发行周期加快,但自动化能力却有所下降。
软件发行的比例从去年的 27% 上升至 29%。其中,以周为发行周期最为常见(26%)。一些因素推动了这一趋势的发展,如云原生技术在生产中不断投入应用;企业组织构建了更先进的IT基础设施;以及新冠疫情的影响,迫使企业需要跟上数字化的需求。
53% 的受访者几乎每天都要对代码进行 check in,80% 的人也会做到每周进行几次 check in。
这或许意味着许多企业组织由于设置周期的复杂性,而不打算直接跳到自动化阶段,或者企业希望保持对应用某些方面的控制。
当涉及硬件等设备时,比如虚拟机和裸金属服务器的数量,无论是拥有 5000 台以上的企业还是拥有 5 台以下的企业数量都在增加,这表明:新的采用者已经进入生态系统,而此前应用了容器部署的企业正持续追加新的硬件设备。
结论:在生产中应用容器已是常态。
今年,92% 的受访者表示在生产中部署了容器技术。其中,95% 的企业在 PoC、测试和开发环境中应用容器,同比上一年均有所增加。这可能意味着企业正准备测试新的用例或增加更多的工作负载。
同时,运行容器的企业数量也有所增加。其中,61% 的企业应用容器数量超过了 250,同比去年仍有所增加。
容器挑战
部署和应用容器的挑战有很多,其中最为迫切的是容器技术的复杂性和工程师文化问题。排名第三的是安全问题(占 32%),其次还有存储、缺乏培训、监测、网服务网格等问题。
结论:Kubernetes 仍是容器构建的核心关注点。
今年,91% 的受访者应用了 Kubernetes,其中有 83% 已经投入在生产环境中。这一比例相比上一年的 78% 和 2018 年的 58%,表现出了持续稳定增长的趋势。
其中,2 至 5 个仍然是最常见的生产集群数;11 个以上生产集群的比例也在逐年增加。
随着 Kubernetes 技术的投入应用,其生态也在不断扩张。2020 年 8 月,Kubernetes 发布了 1.19 版本。根据 DevStats 看板上的数据,从 2020 年 4 月至 8 月期间,有 382 家公司和 2400 多人向 Kubernetes 社区捐献代码。
为此,指导委员会推出了一个名为 Kubernetes.dev 的网站,它以贡献开源代码的文档、资料和项目信息都收集起来。
隔离 Kubernetes 集群
命名空间(Namespaces)仍是隔离 Kubernetes 集群的最主流方法。无论是个人还是企业组织,同比上一年都有所增长。
Kubernetes 安装环境
Kubernetes 应用最多的安装环境分别是:Minikube(37%)、On-Prem Kubernetes(31%)和 Docker Kubernetes(29%)。其中,On-Prem 的比例在今年所有上升。
自动弹性伸缩工作负载
今年,绝大多数受访者(71%)计划换成自动弹性伸缩的无状态应用,一部分受访者(34%)计划用任务 / 队列处理应用,还有一部分(33%)计划运行有状态的应用。
结论:项目应用量增加了 50%。
CNCF 目前拥有 70 多个项目,包括 13 个毕业阶段和 21 个孵化阶段的项目。
其中,Kubernetes(83%)、Prometheus(69%)和 Helm(67%)是生产中应用最多的毕业项目;ETC(62%)、CNI(40%)和 gRPC(35%)则是生产中应用最多的孵化项目。
沙箱阶段的项目应用率猛增了 238%。其中,生产中应用最多的项目是 Flux(8%)、OpenEBS(8%)和网络服务网格(7%);受到最多评估的项目则是 OpenTelemetry(20%)、Service Mesh Interface(14%)和 OpenMetrics(14%)。
结论:CI/CD 和存储工具被广泛应用,而无服务、服务网格和服务代理正在增长。
持续集成和持续交付(CI/CD)
CI/CD 对于自动化构建、测试和部署应用程序至关重要。CI/CD 作为 DevOps 的一个重要方面,在生产中得到了广泛应用。
大约 82% 的受访者在生产中应用 CI/CD;10% 的仍在评估阶段;4% 的则计划在未来 12 个月内运行 CI/CD。
CI/CD 应用最为频繁的三个工具分别是:Jenkins(53%)、GitLab(36%)和 GitHub Actions(20%)。
连续交付(CD)是 CNCF 终端用户技术雷达图(基于社区用户经验来评估云原生技术的指南)中的一项主题。根据雷达图能够发现,Flux 和 Helm 无疑是 CD 最广泛采用的工具。
监测、日志记录和跟踪
监测、日志记录和跟踪往往被混淆为观察和分析IT环境的可置换工具,但每个工具都有其独特用途。这也要求其有从不同维度分析问题的能力。不同的工具在不同的技术环境和集成下具备不同的优势,这也意味着监测、日志记录和跟踪工具同时应用时将具备强大的作用。
CNCF 的第二张终端用户技术雷达图,正是专注于这一特征。根据雷达图能够发现,50% 以上的公司会应用五种或五种以上的工具,三分之一的公司甚至有应用十种以上工具的经验。同时,这些工具往往都是开源的,比如 Prometheus、Grafana、Elastic、Jaeger、OpenTelemetry 等等。
在过去的几年里,无服务计算——应用服务层或函数计算来动态配置和部署云环境的计算负载,已经开始占有一席之地。
从目前看,不到 30% 的受访者在生产中应用无服务技术;21% 的正在评估无服务,还有 14% 的计划在未来 12 个月进行应用。
大多数应用无服务技术的受访者(60%)会应用托管平台;13% 的应用可安装软件,22% 的会二者兼用。
无服务托管平台排名前三的分别是亚马逊的 Lambda(57%)、Google 云函数(27%)和 Azure 函数(24%);可安装软件应用排名前三的分别是 Knative(27%)、Open FaaS(10%)和 Kubeless(5%)。
服务网格
服务网格(Service Mesh)是一个专用的基础架构层,保障服务之间的通信快捷、安全和可靠。
去年,18% 的受访者在生产中应用了服务网格;47% 还在评估中。到了今年,生产中应用服务网格这一数字占比增长到 27%;23% 的还在评估中;另外有 19% 的受访者计划在未来 12 月内应用。
服务代理
服务代理(Service Proxy)通过对微服务之间的交互进行管理,以确保应用性能达到峰值。它可以用来简化数字化转型和云原生架构的运营。
今年 37% 的受访者在生产中应用服务代理;有 12% 正在评估服务代理;另外有 13% 计划在未来 12 个月内应用服务代理。
存储
近年来云原生存储已呈爆炸式增长,其衍生产品已扩展到包括集中式、分布式和超融合架构等。
在最开始的一段时间,容器往往被用来运行无状态的微服务应用,以保证其灵活性和便捷性。然而,如今的数据表明:只有 22% 的受访者在生产中运行无状态应用;55% 的运行有状态应用;22% 还在评估中;11% 计划在未来 12 个月内应用。
云原生的优势
对于那些在生产中应用容器和云原生项目的企业而言,其中有 51% 将其最大的优势归结为改进的可伸缩性和更短的部署时间;44% 则归结为改进的可用性。这一结果与上一年相比稍有不同。