關(guān)鍵兩步+6個要點,讓W(xué)indows應(yīng)用程序享有K8S的絕佳優(yōu)勢

本周四晚20:30,k3s空中課程準時開播!本節(jié)課將介紹k3s簡單易用的功能擴展,包括Helm、Traefik LB等,讓你使用k3s如虎添翼!點擊文末【閱讀原文】或訪問以下鏈接即可報名噢:
http://z-mz.cn/Pmwv
前? 言
實際上,沒有一個遷移路徑能夠適用于將所有傳統(tǒng)應(yīng)用程序遷移到云。這些應(yīng)用程序通常在物理機、虛擬機或本地。雖然一般情況下是重新設(shè)計應(yīng)用程序架構(gòu)以適用云原生服務(wù),但這并非是唯一的答案。將一個現(xiàn)有的應(yīng)用程序的架構(gòu)重新構(gòu)建為微服務(wù)架構(gòu)或云原生架構(gòu)會面臨諸多挑戰(zhàn),如重構(gòu)成本、復(fù)雜性以及應(yīng)用程序的依賴性。
雖然將應(yīng)用程序的架構(gòu)現(xiàn)代化有諸多好處,但許多組織仍在Windows 2003 Servers上運行現(xiàn)有服務(wù)。而微軟不再支持Windows 2003為此帶來了一些挑戰(zhàn)。首先,人們不得不開始決定要如何處理這些應(yīng)用程序,特別是Windows 2008的生命周期也即將結(jié)束。
許多企業(yè)想要遷移到現(xiàn)代架構(gòu)中,期望以此能讓他們的應(yīng)用程序獲得復(fù)雜性、安全性和可用性。而容器提供了使應(yīng)用程序現(xiàn)代化并將其移至云原聲服務(wù)的靈活性。在本文中,我們將重點介紹能夠遷移到容器的應(yīng)用程序,一般是.Net、Web、SQL和其他沒有依賴性但在Windows2003上運行的應(yīng)用程序。你可以無需更改代碼就能將這些應(yīng)用程序遷移到容器,并且使它們在將來具備可移植性。你將會享受到在Kubernetes上運行容器的好處,如可編排、可用性、更高的彈性伸縮和密度。
請注意:不是所有的應(yīng)用程序和服務(wù)都能運行在容器中。有些應(yīng)用程序存在核心依賴項(如數(shù)據(jù)庫、存儲需求等),這些都需要解決。此外,需要根據(jù)業(yè)務(wù)決定應(yīng)用程序的持續(xù)壽命。

商業(yè)層面:遷移到Kubernetes的優(yōu)勢
將這些應(yīng)用程序遷移到容器有一些關(guān)鍵的業(yè)務(wù)原因,如:
投資回報率高
傳統(tǒng)的基于Web的服務(wù)可以獲得可移植性
應(yīng)用程序安全性提升
節(jié)省企業(yè)重新評估現(xiàn)有應(yīng)用程序的時間
既然Kubernetes支持Windows的worker節(jié)點,那么你可以遷移傳統(tǒng)的Windows應(yīng)用程序到現(xiàn)代架構(gòu)中。Windows worker和Linux worker可以共存在同一個Kubernetes平臺中,也就是說,運維團隊可以適用同一套工具、實踐以及過程。
Step1:分析從Windows遷移到K8S的過程
將傳統(tǒng)應(yīng)用程序遷移到Kubernetes需要大量的分析和計劃。但是,有一些關(guān)鍵的實踐是十分必要的,比如:
分解應(yīng)用程序:將應(yīng)用程序拆分為原始形式,以了解哪些組件正在運行,它們?nèi)绾芜\行以及它們的依賴關(guān)系
發(fā)現(xiàn)應(yīng)用程序提供的服務(wù)以及在數(shù)據(jù)、網(wǎng)絡(luò)等方面產(chǎn)生的調(diào)用
從應(yīng)用程序中解耦出數(shù)據(jù)層
確定并映射服務(wù)依賴項
測試、測試再測試
Step2:規(guī)劃從Windows到K8S的遷移過程
遷移到容器化、基于.Net的平臺是一個復(fù)雜的流程,中間會涉及許多步驟。因此,在執(zhí)行這一流程時需要做出一些關(guān)鍵的決定。以下過程提供了一些有關(guān)遷移舊Windows系統(tǒng)以在Kubernetes上運行的要求的指導(dǎo)。
確定你的容器所需要的操作系統(tǒng)——Server Core或Nano Server。這需要根據(jù)應(yīng)用程序的依賴項進行選擇。
遵循兼容性準則。運行Windows容器會為主機的OS版本和容器正在運行的基本鏡像添加嚴格的兼容性規(guī)則。它們必須運行Windows 2019,因為容器及底層主機共享一個內(nèi)核。截至成文時,僅支持服務(wù)器隔離進程。然而,很快會開始支持Hyper-V隔離(具體時間未知),這將有助于主機和容器的兼容。
打包你的傳統(tǒng)應(yīng)用程序。
使用應(yīng)用程序包構(gòu)建基于Docker的初始容器。
在你所選擇的倉庫中部署一個新的Docker容器
充分利用現(xiàn)有的DevOps工具(CI/CD構(gòu)建和發(fā)布流水線)
部署新的Windows應(yīng)用程序到你所構(gòu)建的支持Windows的Kubernetes環(huán)境中
測試、測試,再測試
將Windows應(yīng)用程序遷移至K8S的關(guān)鍵優(yōu)勢
通過從Windows遷移到Kubernetes,你的舊應(yīng)用程序?qū)⑾碛心悻F(xiàn)有基于容器的應(yīng)用程序的優(yōu)勢。此外,你的Windows容器也將會從Kubernetes平臺本身獲得優(yōu)勢。而且,它們可以使用Kubernetes生態(tài)中的工具和系統(tǒng),包括安全性工具、服務(wù)網(wǎng)格、監(jiān)控/告警等。
這些優(yōu)勢疊加在一起,可以讓你處于有利地位,以便于對應(yīng)用程序做出關(guān)鍵決策并發(fā)掘業(yè)務(wù)用例。對于無法遷移的應(yīng)用程序,由于缺乏對底層操作系統(tǒng)的支持,因此你不能對此放任不管,仍然需要決定如何處理它們。而且由于沒有其他可用的補丁或安全補救措施,因此你的企業(yè)容易受到漏洞和攻擊,所以應(yīng)該及時采取行動。
從Windows遷移到K8S的關(guān)鍵要點
基于容器的解決方案可以節(jié)省成本
容器減少依賴項并為應(yīng)用程序提供可移植性
Docker已經(jīng)是運行容器的事實標準,同時Kubernetes是容器編排引擎的事實標準
Kubernetes可以托管可伸縮、可靠且具有彈性的基于Windows容器的應(yīng)用程序以及基于Linux的應(yīng)用程序
運行Kubernetes平臺的組織可以將傳統(tǒng)應(yīng)用程序集成到他們的DevOps文化和工具中
利用原生和基于生態(tài)系統(tǒng)的Kubernetes工具可以提高安全性并為傳統(tǒng)應(yīng)用程序增加額外的保護層
在Rancher 2.3中,GA了對Windows容器的支持。通過把Kubernetes的所有優(yōu)勢引入Windows,Rancher 2.3極大降低了企業(yè)使用Windows容器的復(fù)雜性,并為基于Windows遺留應(yīng)用程序的現(xiàn)代化提供快捷的途徑——無論這些程序是在本地運行還是在多云環(huán)境中運行。此外,Rancher 2.3還可以將它們?nèi)萜骰⑵滢D(zhuǎn)換為高效、安全和可遷移的多云應(yīng)用程序,從而省去重寫應(yīng)用程序的工作。
作者簡介
Kelly Griffin是基礎(chǔ)架構(gòu),安全和微服務(wù)顧問,在提供企業(yè)解決方案方面擁有20多年的經(jīng)驗。他所服務(wù)過的企業(yè)遍布全球,包括澳大利亞、新加坡、新西蘭等。他在使用Docker和Kubernetes的容器化方面有豐富的經(jīng)驗。