公司 Nokia 地点 芬兰埃斯波 行业 电信

挑战

Nokia 的核心业务是构建端到端电信网络;其主要产品与基础设施相关,例如天线、交换设备和路由设备。“作为电信供应商,我们必须将软件交付给多家电信运营商并将其部署到他们的基础设施中,而每家运营商的基础设施都有所不同,”高级开源工程师 Gergely Csatari 表示。“有些运营商运行在裸机上。有些运营商运行在虚拟机上。有些运营商运行在 VMware CloudOpenStack Cloud 上。我们希望在所有这些不同的基础设施上运行相同的产品,而无需更改产品本身。”

解决方案

该公司决定采用云原生技术,这将使团队的产品具有基础设施无关性。Nokia 的团队早在 Kubernetes 1.0 版本之前就开始进行实验。Csatari 表示:“Kubernetes 基于标签的调度机制的简洁性预示着这种架构将具有可伸缩性、稳定性,并非常适合我们的需求。” 第一个基于 Kubernetes 的产品,Nokia Telephony Application Server,于 2018 年初上线。“现在,所有产品都在进行某种重构工作,并正在转向 Kubernetes。”

影响

Kubernetes 使得 Nokia 能够进军 5G 领域。“当你开发的东西是运营商基础设施的一部分时,你必须为未来而开发,而 Kubernetes 和容器就是面向未来的技术,”Csatari 说。使用 Kubernetes 的团队已经看到了明显的益处。Csatari 表示:“通过分离基础设施层和应用层,我们系统中的依赖项减少了,这意味着在应用层实现功能变得更容易。” 他补充说,由于团队可以在独立于目标执行环境的情况下测试完全相同的二进制工件,“我们在测试的早期阶段发现更多的错误,而且我们不需要在不同的目标环境(如 VMware、OpenStack 或裸机)上运行相同的测试。” 因此,“我们在每个版本中节省数百小时的时间。”

在 20 世纪 90 年代末和 21 世纪初手机开始普及的时候,Nokia 是手机领域的领军企业。但到了 2014 年,该公司已经出售了其移动设备部门,并将核心业务重点放在网络上,而不是用于通话的手持设备上。

如今,Nokia 正在构建端到端电信网络——从天线到交换和路由设备——为 120 多个国家的运营商提供服务。“作为电信供应商,我们必须将软件交付给多家电信运营商并将其部署到他们的基础设施中,而每家运营商的基础设施都有所不同,”Nokia 高级开源工程师 Gergely Csatari 表示。“有些运营商运行在裸机上。有些运营商运行在虚拟机上。有些运营商运行在 VMware Cloud 和 OpenStack Cloud 上。我们希望在所有这些不同的基础设施上运行相同的产品,而无需更改产品本身。”

为了使其团队能够构建具有基础设施无关性的产品,该公司决定采用容器化、Kubernetes 和其他云原生技术,这是整个电信行业正在进行的转变。Csatari 表示,自 2018 年初以来,“当人们拿起手机通过 Nokia 网络拨打电话时,他们在后台使用 Kubernetes 创建了容器。”“现在,所有产品都在进行某种重构工作,并正在转向 Kubernetes。”

Nokia 的云原生之旅大约始于两年前,当时 Csatari 的团队正在构建公司的 Telephony Application Server (TAS)。他说:“我们希望在产品中有一个服务执行引擎,它与所有其他部分是完全独立的功能。”“在那里,我们有机会考虑新的架构和可以使用的工具。我们基于 Kubernetes 构建了这个特定产品,我们喜欢这项工作,所以我们开始讨论云原生、容器以及所有这些东西。我们对不同的容器编排工具进行了非常广泛的研究。我们知道,由于我们的软件运行在特殊的环境中,我们有一些,可以说,奇怪或不同的要求。”

一方面,Nokia 的软件服务数百万用户,并且需要具备运营商级的“五个九”可用性:即 99.999% 的正常运行时间。Csatari 说:“如果换算成分钟,这意味着我们在整整一年中只允许有 10 分钟的停机时间。”“这里的停机时间意味着你无法以满负荷服务用户,这意味着我们不能失败。这包括软件升级,所有的一切,因为当你拨打 911 时,你正在使用我们的软件,而你期望它能够工作。”

这意味着他们需要在编排工具中设置亲和性和反亲和性规则。Csatari 解释说:“你不能把所有功能都放在同一个物理主机上,因为物理主机可能会出现故障。”“如果一个物理主机出现故障,那么你会丢失所有的核心处理进程。这样就没有电话呼入呼出了。所以我们必须将它们分配到不同的物理主机上。当时,只有 Kubernetes 能够提供这些功能。Kubernetes 基于标签的调度机制的简洁性预示着这种架构将具有可伸缩性、稳定性,并非常适合我们的需求。”

TAS 于 2018 年初上线,现在 Kubernetes 也助力 Nokia 进军 5G。公司正在引入微服务架构和 Kubernetes,同时为现有产品增加 5G 功能。所有新的 5G 产品开发都将基于 Kubernetes。Csatari 说:“当你开发的东西是运营商基础设施的一部分时,你必须为未来而开发,而 Kubernetes 和容器就是面向未来的技术。”

借助 Kubernetes,确实节省了大量时间。Csatari 表示:“通过分离基础设施层和应用层,我们系统中的依赖项减少了,这意味着在应用层实现功能变得更容易。” 他补充说,由于团队可以在独立于目标执行环境的情况下测试完全相同的二进制工件,“我们在测试的早期阶段发现更多的错误,而且我们不需要在不同的目标环境(如 VMware、OpenStack 或裸机)上运行相同的测试。” 因此,“我们在每个版本中节省数百小时的时间。”

从 Nokia 遗留的集群管理系统(三十多年前内部构建)迁移到 Kubernetes 平台,也意味着“我们开始使用 Linux 作为基础操作系统,因此我们打开了通往所有这些开源项目的大门,而不是把所有东西都自己实现,”Csatari 说。(来自 CNCF 生态系统,团队已经在使用 HelmgRPCCNIPrometheusEnvoy,并计划实现 CoreDNS。)“我们的工程师可以更多地专注于应用层面,这才是我们真正在销售的东西,而不是基础设施层面。对我们来说,Kubernetes 最重要的一点是它让我们能够专注于为我们的业务创造价值。”

公司的长期目标是将整个产品组合迁移到 Kubernetes 平台。为此,Nokia 团队正与其他公司合作,添加在无线网络边缘附近使用 Kubernetes 处理实时、纳秒级敏感应用所需的功能。

CNCF 社区也正在成为这种协作的绝佳论坛。Csatari 说:“我在 KubeCon 上与网络 SIG 和资源管理工作组的人员进行了一些讨论,以便共同解决我们的需求,这对我自己和我的同事来说都非常令人兴奋。”“以前,每个人都有同样的问题,但每个人都各自为政,现在我们正在努力一起解决同一个问题。”

Csatari 认为,Kubernetes 对 Nokia 产生的最大影响,或许在于人们开始思考电信公司如何才能做到 DevOps。他说:“我们正在构建一个 DevOps 流水线,它从实际开发者一直延伸到客户,并思考如何以新的方式将软件数字化交付给客户,并将客户的反馈直接传达给工程师。”“这将从根本上改变电信公司交付软件的方式,以及我们开发新功能的速度。这得益于容器的使用,当然,还有 Kubernetes 的使用。”