挑战
诺基亚的核心业务是端到端构建电信网络;其主要产品与基础设施相关,例如天线、交换设备和路由设备。“作为电信供应商,我们必须将软件交付给多个电信运营商,并将软件部署到他们的基础设施中,而每个运营商的基础设施都略有不同,”高级开源工程师 Gergely Csatari 说。“有些运营商在裸机上运行。有些运营商在虚拟机上运行。有些运营商在 VMware 云和 OpenStack 云上运行。我们希望在所有这些不同的基础设施上运行相同的产品,而无需更改产品本身。”
解决方案
公司决定转向云原生技术,这将使团队能够在产品中实现与基础设施无关的行为。诺基亚的团队开始在 Kubernetes 1.0 版本之前进行实验。“Kubernetes 基于标签的调度的简单性表明这种架构将具有可扩展性、稳定性,并且非常适合我们的目的,”Csatari 说。第一个基于 Kubernetes 的产品,诺基亚电话应用服务器,于 2018 年初上线。“现在,所有产品都在进行某种重构工作,并且正在转向 Kubernetes。”
影响
Kubernetes 使诺基亚进军 5G 成为可能。“当你开发属于运营商基础设施一部分的东西时,你必须为未来而开发,而 Kubernetes 和容器是面向未来的技术,”Csatari 说。使用 Kubernetes 的团队已经看到了明显的好处。“通过将基础设施和应用层分离,我们系统中的依赖项减少了,这意味着在应用层实现功能更容易,”Csatari 说。而且,由于团队可以独立于目标执行环境测试完全相同的二进制工件,“我们在测试的早期阶段发现了更多错误,并且我们不需要在不同的目标环境(如 VMware、OpenStack 或裸机)上运行相同的测试,”他补充道。因此,“我们在每个版本中节省了数百小时。”
如今,诺基亚正在端到端地构建电信网络——从天线到交换和路由设备——为 120 多个国家的运营商提供服务。“作为电信供应商,我们必须将软件交付给多个电信运营商,并将软件部署到他们的基础设施中,而每个运营商的基础设施都略有不同,”诺基亚高级开源工程师 Gergely Csatari 说。“有些运营商在裸机上运行。有些运营商在虚拟机上运行。有些运营商在 VMware 云和 OpenStack 云上运行。我们希望在所有这些不同的基础设施上运行相同的产品,而无需更改产品本身。”
为了让团队能够构建具有基础设施无关行为的产品,该公司决定采用容器化、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 平台。为此,诺基亚团队正在与其他公司合作,添加所需的功能,以便在无线网络边缘使用对纳秒级敏感的实时应用程序。
CNCF 社区正在成为这种协作的绝佳论坛。“我在 KubeCon 上与网络 SIG 和资源管理工作组的人员进行了一些讨论,共同研究我们的需求,这让我和我的同事们非常兴奋,”Csatari 说。“以前,每个人都有同样的问题,但每个人都只是自己做,现在我们正在努力共同解决同样的问题。”
Csatari 认为,Kubernetes 对诺基亚最大的影响可能在于,人们开始思考电信公司如何进行 DevOps。“我们正在构建一个 DevOps 流水线,它从实际的开发人员延伸到客户,并思考如何以新的方式将我们的软件数字交付给客户,并直接从客户那里获取反馈给工程师,”他说。“这将从根本上改变电信公司交付软件的方式,以及我们开发新功能的速度。这归因于容器的使用,当然还有 Kubernetes 的使用。”