公司 Nokia 地點 芬蘭,艾斯波 產業 電信

挑戰

Nokia 的核心業務是建構端對端電信網路;其主要產品與基礎設施相關,例如天線、交換設備和路由設備。「身為電信供應商,我們必須將我們的軟體交付給多家電信業者,並將軟體放入他們的基礎設施中,而每家電信業者的基礎設施都略有不同。」資深開源工程師 Gergely Csatari 說。「有些業者在裸機上運行。有些業者在虛擬機器上運行。有些業者在 VMware CloudOpenStack Cloud 上運行。我們希望在所有這些不同的基礎設施上運行相同的產品,而無需更改產品本身。」

解決方案

公司決定轉向雲原生技術將使團隊能夠在其產品中實現與基礎設施無關的行為。Nokia 的團隊開始在 1.0 之前的版本中試驗 Kubernetes。「Kubernetes 基於標籤的排程的簡潔性是一個跡象,向我們表明此架構將可擴展、穩定,並且適合我們的用途。」Csatari 說。第一個基於 Kubernetes 的產品,Nokia 電信應用伺服器,於 2018 年初上線。「現在,所有產品都在進行某種重新架構工作,並且他們正在轉向 Kubernetes。」

影響

Kubernetes 促成了 Nokia 進軍 5G。「當您開發屬於業者基礎設施一部分的東西時,您必須為未來開發它,而 Kubernetes 和容器是前瞻性技術。」Csatari 說。使用 Kubernetes 的團隊已經看到了明顯的好處。「透過分離基礎設施和應用程式層,我們系統中的依賴性減少了,這意味著在應用程式層中實作功能更容易。」Csatari 說。而且由於團隊可以獨立於目標執行環境測試完全相同的二進位工件,「我們在測試的早期階段發現了更多錯誤,而且我們不需要在不同的目標環境(如 VMware、OpenStack 或裸機)上運行相同的測試。」他補充說。因此,「我們在每個版本中節省了數百小時。」

在 1990 年代末和 2000 年代初手機變得普及時,Nokia 是手機領域的領頭羊。但到了 2014 年,該公司已出售其行動裝置部門,並將其核心業務重點放在網路上,而不是用於通話的手持裝置上。

今天,Nokia 正在建構端對端電信網路——從天線到交換和路由設備——為 120 多個國家的業者提供服務。「身為電信供應商,我們必須將我們的軟體交付給多家電信業者,並將軟體放入他們的基礎設施中,而每家電信業者的基礎設施都略有不同。」Nokia 資深開源工程師 Gergely Csatari 說。「有些業者在裸機上運行。有些業者在虛擬機器上運行。有些業者在 VMware Cloud 和 OpenStack Cloud 上運行。我們希望在所有這些不同的基礎設施上運行相同的產品,而無需更改產品本身。」

為了尋找一種方法讓其團隊能夠建構具有與基礎設施無關行為的產品,該公司決定擁抱容器化、Kubernetes 和其他雲原生技術,這是整個電信行業正在進行的轉變。自 2018 年初以來,「當人們拿起手機並在 Nokia 網路上撥打電話時,他們正在背景中使用 Kubernetes 建立容器。」Csatari 說。「現在,所有產品都在進行某種重新架構工作,並且他們正在轉向 Kubernetes。」

Nokia 的雲原生之旅大約在兩年前開始,當時 Csatari 的團隊正在建構公司的電信應用伺服器 (TAS)。「我們希望在產品中擁有一個服務執行引擎,它是一個與所有其他部分完全獨立的功能。」他說。「在那裡,我們有可能思考我們可以使用的新架構和新工具。我們基於 Kubernetes 建立了這個特定產品,我們喜歡這項工作,因此我們開始談論雲原生和容器以及所有這些東西。我們對不同的容器編排工具進行了非常廣泛的研究。我們知道我們有一些,可以說,奇怪或不同的要求,因為我們的軟體運行的特殊環境。」

首先,Nokia 的軟體服務於數百萬人,並且需要具有電信級「五個九」的可用性:99.999% 的時間處於運行狀態。「如果您將其轉換為分鐘,這意味著我們在整整一年中只允許有 10 分鐘的停機時間。」Csatari 說。「這裡的停機時間意味著您無法為人提供全容量的服務,這意味著我們不能失敗。這包括軟體升級,所有的一切,因為當您撥打 911 時,您正在使用我們的軟體,並且您期望它能夠運作。」

這意味著他們需要在其編排工具中設定親和性和反親和性規則。「您不能將所有功能都放在同一台實體主機上,因為實體主機會發生故障。」Csatari 解釋說。「如果您一台實體主機發生故障,那麼您將失去所有核心處理程序。然後就沒有電話可以撥通了。因此,我們必須將它們分散在不同的實體主機之間。當時,只有 Kubernetes 能夠提供這些功能。Kubernetes 基於標籤的排程的簡潔性是一個跡象,向我們表明此架構將可擴展、穩定,並且適合我們的用途。」

TAS 於 2018 年初上線,現在 Kubernetes 也正在促成 Nokia 進軍 5G。該公司正在引入微服務架構和 Kubernetes,同時將 5G 功能添加到現有產品中。所有新的 5G 產品開發都將基於 Kubernetes 之上。「當您開發屬於業者基礎設施一部分的東西時,您必須為未來開發它,而 Kubernetes 和容器是前瞻性技術。」Csatari 說。

由於 Kubernetes,已經實現了真正的時間節省。「透過分離基礎設施和應用程式層,我們系統中的依賴性減少了,這意味著在應用程式層中實作功能更容易。」Csatari 說。由於團隊可以獨立於目標執行環境測試完全相同的二進位工件,「我們在測試的早期階段發現了更多錯誤,而且我們不需要在不同的目標環境(如 VMware、OpenStack 或裸機)上運行相同的測試。」他補充說。因此,「我們在每個版本中節省了數百小時。」

從 Nokia 傳統的叢集管理系統(三十多年前在內部建構的)轉移到 Kubernetes 平台也意味著「我們開始使用 Linux 作為基礎作業系統,因此我們只是為所有這些開源專案打開了視窗,而不是在內部實作所有東西。」Csatari 說。(從 CNCF 的生態系統中,該團隊已經在使用 HelmgRPCCNIPrometheusEnvoy,並計劃實作 CoreDNS。)「我們的工程師可以更專注於應用程式層,這實際上是我們正在銷售的東西,而不是基礎設施層。對於我們來說,關於 Kubernetes 最重要的事情是它讓我們能夠專注於我們業務的價值創造。」

該公司的長期目標是將整個產品組合遷移到 Kubernetes 平台。為此,Nokia 團隊正在與其他公司合作,以添加使用 Kubernetes 處理靠近無線電網路邊緣的即時、奈秒級敏感應用程式所需的功能。

CNCF 社群被證明是這種協作的絕佳論壇。「我曾在 KubeCon 與來自網路 SIG 和資源管理工作組的人員進行了一些討論,以便共同努力滿足我們的需求,這對我和我的同事來說非常令人興奮。」Csatari 說。「以前,每個人都有相同的問題,但每個人都只是自己做,而現在我們正在嘗試一起解決相同的問題。」

Csatari 認為,Kubernetes 對 Nokia 產生的最大影響也許是,人們開始思考電信公司如何才能做到 DevOps。「我們正在建構一個 DevOps 管道,從實際開發人員延伸到客戶,並思考如何以數位方式將我們的軟體交付給客戶,並從客戶那裡獲得直接回饋給工程師。」他說。「這將從根本上改變電信公司交付軟體的方式,以及我們可以多快開發新功能。這是因為使用了容器,當然還有 Kubernetes 的使用。」