挑战
诺基亚的核心业务是构建端到端的电信网络;其主要产品与基础设施相关,例如天线、交换设备和路由设备。“作为电信供应商,我们必须将我们的软件交付给多家电信运营商,并将软件放入他们的基础设施中,而每个运营商的基础设施都略有不同,”高级开源工程师 Gergely Csatari 说。“有些运营商在裸机上运行。有些运营商在虚拟机上运行。有些运营商在 VMware Cloud 和 OpenStack Cloud 上运行。我们希望在所有这些不同的基础设施上运行相同的产品,而无需更改产品本身。”
解决方案
该公司决定,转向云原生技术将使团队在其产品中具有与基础设施无关的行为。诺基亚的团队开始在 1.0 版本之前的版本中试验 Kubernetes。“Kubernetes 基于标签的调度的简单性是一个迹象,表明这种架构将具有可扩展性、稳定性和良好性,适合我们的目的,”Csatari 说。第一个基于 Kubernetes 的产品 诺基亚电话应用服务器 于 2018 年初上线。“现在,所有产品都在进行某种重构工作,并且正在转向 Kubernetes。”
影响
Kubernetes 使诺基亚得以进军 5G。“当你开发作为运营商基础设施一部分的东西时,你必须为未来开发它,而 Kubernetes 和容器是面向未来的技术,”Csatari 说。使用 Kubernetes 的团队已经看到了明显的好处。“通过分离基础设施和应用层,我们在系统中的依赖性减少了,这意味着更容易在应用层中实现功能,”Csatari 说。而且,由于团队可以独立于目标执行环境测试完全相同的二进制工件,“我们在测试的早期阶段发现了更多错误,并且我们不需要在不同的目标环境(如 VMware、OpenStack 或裸机)上运行相同的测试,”他补充说。因此,“我们每个版本可以节省数百小时。”
今天,诺基亚正在构建端到端的电信网络——从天线到交换和路由设备——为 120 多个国家/地区的运营商提供服务。“作为电信供应商,我们必须将我们的软件交付给多家电信运营商,并将软件放入他们的基础设施中,而每个运营商的基础设施都略有不同,”诺基亚高级开源工程师 Gergely Csatari 说。“有些运营商在裸机上运行。有些运营商在虚拟机上运行。有些运营商在 VMware Cloud 和 OpenStack Cloud 上运行。我们希望在所有这些不同的基础设施上运行相同的产品,而无需更改产品本身。”
为了寻找一种让其团队构建具有与基础设施无关的行为的产品的途径,该公司决定采用容器化、Kubernetes 和其他云原生技术,这是整个电信行业正在采取的行动。自 2018 年初以来,“当人们拿起手机在诺基亚网络上打电话时,他们会在后台使用 Kubernetes 创建容器,”Csatari 说。“现在,所有产品都在进行某种重构工作,并且正在转向 Kubernetes。”
诺基亚的云原生之旅大约在两年前开始,当时 Csatari 的团队正在构建该公司的电话应用服务器 (TAS)。“我们希望在产品中拥有一个服务执行引擎,它是一个与所有其他部分完全分离的功能,”他说。“在那里,我们有可能考虑新的架构和我们可以使用的新工具。我们创建了基于 Kubernetes 的特定产品,我们喜欢这项工作,因此我们开始讨论云原生和容器以及所有这些东西。我们对不同的容器编排工具进行了非常广泛的研究。我们知道我们有一些,比如说,奇怪的或不同的要求,因为我们的软件运行在特殊的环境中。”
首先,诺基亚的软件为数百万人提供服务,并且需要具有运营商级的“五个九”可用性:99.999% 的正常运行时间。“如果你将其转换为分钟,这意味着我们一年只允许有 10 分钟的停机时间,”Csatari 说。“这里的停机时间意味着您无法为个人提供完全容量的服务,这意味着我们不能失败。这包括软件升级,所有事情,因为当您拨打 911 时,您正在使用我们的软件,并且您希望它能够正常工作。”
这意味着他们需要在编排工具中设置亲和性和反亲和性规则。“你不能将所有功能都放在同一个物理主机上,因为物理主机正在失效,”Csatari 解释说。“如果你一个物理主机失败了,那么你将失去所有的核心处理过程。然后就没有电话接通。因此,我们必须将它们分配到不同的物理主机之间。当时,只有 Kubernetes 能够提供这些功能。Kubernetes 基于标签的调度的简单性是一个迹象,表明这种架构将具有可扩展性、稳定性和良好性,适合我们的目的。”
TAS 于 2018 年初上线,现在 Kubernetes 也在帮助诺基亚进军 5G。该公司正在引入微服务架构和 Kubernetes,同时将 5G 功能添加到现有产品中。所有新的 5G 产品开发都将基于 Kubernetes。“当你开发作为运营商基础设施一部分的东西时,你必须为未来开发它,而 Kubernetes 和容器是面向未来的技术,”Csatari 说。
由于 Kubernetes,时间得到了真正的节省。“通过分离基础设施和应用层,我们在系统中的依赖性减少了,这意味着更容易在应用层中实现功能,”Csatari 说。由于团队可以独立于目标执行环境测试完全相同的二进制工件,“我们在测试的早期阶段发现了更多错误,并且我们不需要在不同的目标环境(如 VMware、OpenStack 或裸机)上运行相同的测试,”他补充说。因此,“我们每个版本可以节省数百小时。”
从诺基亚的旧式集群管理系统(该系统是三十多年前在内部构建的)迁移到 Kubernetes 平台,也意味着“我们开始使用 Linux 作为基本操作系统,因此我们只是打开了通往所有这些开源项目的窗口,而不是在内部实现所有功能,”Csatari 说。(从 CNCF 的生态系统来看,该团队已经在使用 Helm、gRPC、CNI、Prometheus 和 Envoy,并计划实施 CoreDNS。)“我们的工程师可以更多地关注应用层,这实际上是我们正在销售的东西,而不是基础设施层。对我们来说,关于 Kubernetes 最重要的事情是它使我们能够专注于我们业务的价值创造。”
该公司的长期目标是将整个产品组合迁移到 Kubernetes 平台。为此,诺基亚团队正在与其他公司合作,添加使用 Kubernetes 的功能,用于靠近无线电网络边缘的实时、纳秒级敏感应用程序。
CNCF 社区正在证明它是进行这种协作的绝佳论坛。“我在 KubeCon 上与网络 SIG 和资源管理工作组的人员进行了一些讨论,以共同研究我们的需求,这让我和我的同事都感到非常兴奋,”Csatari 说。“以前,每个人都有同样的问题,但每个人都只是自己解决,而现在我们正试图共同解决同一个问题。”
Csatari 认为,Kubernetes 对诺基亚的最大影响也许是人们开始思考电信公司如何进行 DevOps。“我们正在构建一个 DevOps 管道,它从实际的开发人员延伸到客户,并思考如何以数字方式将我们的软件交付给客户,并从客户那里获得反馈直接反馈给工程师,”他说。“这将从根本上改变电信公司交付软件的方式,以及我们开发新功能的速度。这都是因为使用了容器,当然也使用了 Kubernetes。”