挑戰
諾基亞的核心業務是端到端構建電信網路;其主要產品與基礎設施相關,例如天線、交換裝置和路由裝置。“作為電信供應商,我們必須將軟體交付給多個電信運營商,並將軟體部署到他們的基礎設施中,而每個運營商的基礎設施都略有不同,”高階開源工程師 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 的使用。”