1. 程式人生 > >關鍵兩步+6個要點,讓Windows應用程式享有K8S的絕佳優勢

關鍵兩步+6個要點,讓Windows應用程式享有K8S的絕佳優勢

本文來自Rancher Labs

前  言

實際上,沒有一個遷移路徑能夠適用於將所有傳統應用程式遷移到雲。這些應用程式通常在物理機、虛擬機器或本地。雖然一般情況下是重新設計應用程式架構以適用雲原生服務,但這並非是唯一的答案。將一個現有的應用程式的架構重新構建為微服務架構或雲原生架構會面臨諸多挑戰,如重構成本、複雜性以及應用程式的依賴性。

雖然將應用程式的架構現代化有諸多好處,但許多組織仍在Windows 2003 Servers上執行現有服務。而微軟不再支援Windows 2003為此帶來了一些挑戰。首先,人們不得不開始決定要如何處理這些應用程式,特別是Windows 2008的生命週期也即將結束。

許多企業想要遷移到現代架構中,期望以此能讓他們的應用程式獲得複雜性、安全性和可用性。而容器提供了使應用程式現代化並將其移至雲原聲服務的靈活性。在本文中,我們將重點介紹能夠遷移到容器的應用程式,一般是.Net、Web、SQL和其他沒有依賴性但在Windows2003上執行的應用程式。你可以無需更改程式碼就能將這些應用程式遷移到容器,並且使它們在將來具備可移植性。你將會享受到在Kubernetes上執行容器的好處,如可編排、可用性、更高的彈性伸縮和密度。

請注意:不是所有的應用程式和服務都能執行在容器中。有些應用程式存在核心依賴項(如資料庫、儲存需求等),這些都需要解決。此外,需要根據業務決定應用程式的持續壽命。

商業層面:遷移到Kubernetes的優勢

將這些應用程式遷移到容器有一些關鍵的業務原因,如:

  • 投資回報率高

  • 傳統的基於Web的服務可以獲得可移植性

  • 應用程式安全性提升

  • 節省企業重新評估現有應用程式的時間

既然Kubernetes支援Windows的worker節點,那麼你可以遷移傳統的Windows應用程式到現代架構中。Windows worker和Linux worker可以共存在同一個Kubernetes平臺中,也就是說,運維團隊可以適用同一套工具、實踐以及過程。

Step1:分析從Windows遷移到K8S的過程

將傳統應用程式遷移到Kubernetes需要大量的分析和計劃。但是,有一些關鍵的實踐是十分必要的,比如:

  • 分解應用程式:將應用程式拆分為原始形式,以瞭解哪些元件正在執行,它們如何執行以及它們的依賴關係

  • 發現應用程式提供的服務以及在資料、網路等方面產生的呼叫

  • 從應用程式中解耦出資料層

  • 確定並對映服務依賴項

  • 測試、測試再測試

Step2:規劃從Windows到K8S的遷移過程

遷移到容器化、基於.Net的平臺是一個複雜的流程,中間會涉及許多步驟。因此,在執行這一流程時需要做出一些關鍵的決定。以下過程提供了一些有關遷移舊Windows系統以在Kubernetes上執行的要求的指導。

  • 確定你的容器所需要的作業系統——Server Core或Nano Server。這需要根據應用程式的依賴項進行選擇。

  • 遵循相容性準則。執行Windows容器會為主機的OS版本和容器正在執行的基本映象新增嚴格的相容性規則。它們必須執行Windows 2019,因為容器及底層主機共享一個核心。截至成文時,僅支援伺服器隔離程序。然而,很快會開始支援Hyper-V隔離(具體時間未知),這將有助於主機和容器的相容。

  • 打包你的傳統應用程式。

  • 使用應用程式包構建基於Docker的初始容器。

  • 在你所選擇的倉庫中部署一個新的Docker容器

  • 充分利用現有的DevOps工具(CI/CD構建和釋出流水線)

  • 部署新的Windows應用程式到你所構建的支援Windows的Kubernetes環境中

  • 測試、測試,再測試

將Windows應用程式遷移至K8S的關鍵優勢

通過從Windows遷移到Kubernetes,你的舊應用程式將享有你現有基於容器的應用程式的優勢。此外,你的Windows容器也將會從Kubernetes平臺本身獲得優勢。而且,它們可以使用Kubernetes生態中的工具和系統,包括安全性工具、服務網格、監控/告警等。

這些優勢疊加在一起,可以讓你處於有利地位,以便於對應用程式做出關鍵決策併發掘業務用例。對於無法遷移的應用程式,由於缺乏對底層作業系統的支援,因此你不能對此放任不管,仍然需要決定如何處理它們。而且由於沒有其他可用的補丁或安全補救措施,因此你的企業容易受到漏洞和攻擊,所以應該及時採取行動。

從Windows遷移到K8S的關鍵要點

  • 基於容器的解決方案可以節省成本

  • 容器減少依賴項併為應用程式提供可移植性

  • Docker已經是執行容器的事實標準,同時Kubernetes是容器編排引擎的事實標準

  • Kubernetes可以託管可伸縮、可靠且具有彈性的基於Windows容器的應用程式以及基於Linux的應用程式

  • 執行Kubernetes平臺的組織可以將傳統應用程式整合到他們的DevOps文化和工具中

  • 利用原生和基於生態系統的Kubernetes工具可以提高安全性併為傳統應用程式增加額外的保護層

在Rancher 2.3中,GA了對Windows容器的支援。通過把Kubernetes的所有優勢引入Windows,Rancher 2.3極大降低了企業使用Windows容器的複雜性,併為基於Windows遺留應用程式的現代化提供快捷的途徑——無論這些程式是在本地執行還是在多雲環境中執行。此外,Rancher 2.3還可以將它們容器化並將其轉換為高效、安全和可遷移的多雲應用程式,從而省去重寫應用程式的工作。

作者簡介

Kelly Griffin是基礎架構,安全和微服務顧問,在提供企業解決方案方面擁有20多年的經驗。他所服務過的企業遍佈全球,包括澳大利亞、新加坡、紐西蘭等。他在使用Docker和Kubernetes的容器化方面有豐富的經驗。