眾所周知,Windows 的應用無法運行在 Linux上,而 Linux 應用也無法運行在 Windows 上。但是,事實上,當 Docker 將容器作為一種顯著的打包應用的方法,并且可以在“任意地方”封裝它的時候,這里的“任意地方”就已經包含了“Linux”。Windows也有容器,但是要讓所有工作都一起運行還是不太可能的。
但是,今天Kubernetes1.5的發布,讓Linux和Windows一起運行的夢想能夠實現了。
Kubernetes1.5(alpha 版本)支持Windows服務器容器,跟Docker類似,他們共享同一個內核模式;而Hyper-V容器的單核模式則為多租戶環境提供了更好的隔離(代價是延遲時間更長了)。終的結果就是,在你創建的這個Kubernetes集群上,Linux節點可以運行Linux容器,Windows 節點可以運行 Windows 容器;同時,Linux節點也可以運行Windows容器,Windows節點也可以運行Linux容器,真正實現混合集群。比如,單個 service允許Pod使用Windows服務器容器,也允許其它的Pod使用 Linux 容器。
雖然 Kubernetes1.5 功能全面,但是也有它的局限性,比如:
Kubernetes 是由Go語言編寫的,以至于它帶有一定的依賴性,所以 Kubernetes master 必須運行在 Linux 上。如果端口映射到 Windows 也是可以的,但是技術團隊更愿意把主要精力放在客戶組件上。
Windows本地不支持網絡疊加功能的容器,所以網絡就被限制在了L3。(雖然問題也有其它的解決辦法,但是這些辦法都不支持本地)。Kubernetes Windows SIG正在跟Microsoft協同工作解決這些問題,希望明年發布的 Kubernetes1.6 版本中,這些問題都能夠得到解決。
Windows容器間的網絡更加復雜,因為每個容器都有自己的網絡 namespace,所以推薦使用單個容器pod。
運行在 Windows 服務器上的應用能夠以任意 Windows 支持的語言運行??梢栽贚inux容器中運行 .NET 應用,但是前提是這些應用必須是用.NET Core寫的才可以。Nano服務器操作系統也支持.NET core,而且還可以部署在Windows服務器容器上。
這次 Kubernetes1.5的發布也支持IIS(目前它占據了網上11.4%的江山)和 ASP.NET。
Apprenda努力開發Kubernetes,就是為了讓企業既能夠享受Kubernetes 帶來的益處,同時還能夠有效利用他們已有的 Windows 資源。“我們的策略就是給我們的企業客戶提供堅定使用Kubernetes 的理由。要做到這點,沒有Windows的支持是不行的。2016 年3 月,我們承諾 Kubernetes 會支持Windows服務器,我們在這次發布的 1.5 版本中做到了?!盇pprenda CEO,Sinclair說道,“我們會在編排Windows服務器容器、Hyper-V容器的時候,將全部功能交付到Linux 上,使機構組織者可以為他們的分布式應用獲得單個控制面板。”
Kubernetes 1.5(beta 版本)也支持StatefulSets(由 PetSets 改名)。由 Kubernetes 管理的ReplicaSets 和Pods,會變成無狀態,所以,如果這些功能不使用,或者用不到的話,就會變成“一次性”應用。但是在某些情況下,比如數據庫,集群軟件(比如RabbitMQ 集群),或者其它舊的有狀態對象,可能性就比較小了。StatefulSets提供更加具體的辨識資源的方法,這樣更好維護這些項目之間的聯系。
Kubernetes1.5 還包括了一些早期所做的努力,比如讓Kubernetes 部署符合 OCI 標準的容器等等。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。