一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Windows 容器化技術(shù)初探-- .NET應(yīng)用上云之路

 yi321yi 2020-05-21

【作者】中國(guó)農(nóng)業(yè)銀行研發(fā)中心 張少博

一、 引言

容器化技術(shù)是當(dāng)今技術(shù)浪潮中支撐微服務(wù)和DevOps的重要推動(dòng)力量。雖說Docker容器技術(shù)源自Linux內(nèi)核相關(guān)技術(shù),但微軟、Docker及Kubernetes社區(qū)也在不斷完善Windows操作系統(tǒng)對(duì)容器化的支持。自v1.14版本起,Kubernetes對(duì)Windows容器的支持進(jìn)入穩(wěn)定階段。本文試從Windows容器化技術(shù)相關(guān)概念出發(fā),對(duì)Windows .NET應(yīng)用上云之路的相關(guān)問題進(jìn)行探討。

二、 Windows容器化技術(shù)

(一) Windows容器類型

相對(duì)于傳統(tǒng)硬件虛擬化技術(shù),容器技術(shù)更加輕量,其代價(jià)是容器中應(yīng)用的運(yùn)行仍一定程度上依賴于宿主機(jī)的操作系統(tǒng)內(nèi)核提供的能力,多個(gè)容器共享宿主機(jī)的操作系統(tǒng)內(nèi)核。也正是因?yàn)檫@個(gè)原因,Windows容器無(wú)法在Linux上運(yùn)行,Linux容器也無(wú)法在Windows上運(yùn)行。為提供容器化能力,Windows自Server 2016版開始逐漸加入了內(nèi)核命名空間、控制組群、分層文件系統(tǒng)等內(nèi)核功能,以提供類似Linux的容器化能力。

事實(shí)上,Windows支持兩種類型的容器運(yùn)行時(shí):進(jìn)程隔離和Hyper-V隔離。兩種隔離模式可以在運(yùn)行容器時(shí)以參數(shù)方式指定。

進(jìn)程隔離,也稱為Windows Server Containers,Windows Server上的默認(rèn)隔離模式。在該模式下,宿主機(jī)上的多個(gè)容器共用該宿主機(jī)的操作系統(tǒng)內(nèi)核,有一定的安全風(fēng)險(xiǎn),只適用于私有云環(huán)境。同時(shí)由于共享內(nèi)核,容器的內(nèi)核版本應(yīng)與宿主機(jī)的內(nèi)核版本保持一致,即Windows Server 2019宿主機(jī)上只能運(yùn)行Windows Server 2019的容器。

Hyper-V隔離,是上述模式的擴(kuò)展,Windows 10上的默認(rèn)隔離模式。在該模式下,每個(gè)容器獨(dú)立運(yùn)行于高度優(yōu)化的虛擬機(jī)至上,不共享宿主機(jī)內(nèi)核,因此可以運(yùn)行其他版本的內(nèi)核甚至是Linux內(nèi)核。但需要注意的是只能運(yùn)行相同或更老版本的內(nèi)核,如Windows Server 2019宿主機(jī)除了可以運(yùn)行Windows Server 2019容器外,還可以運(yùn)行Windows Server 2016容器,而無(wú)法運(yùn)行1903或者1909版本的容器。

(二) Linux容器 vs Windows容器

與Linux容器相比,Windows容器存在以下主要特點(diǎn):

1、如上所述,Windows容器內(nèi)核版本與宿主機(jī)內(nèi)核版本存在強(qiáng)綁定,即使使用Hyper-V模式也只是增加了對(duì)運(yùn)行更舊內(nèi)核版本的容器的支持。而在Linux上,只要內(nèi)核版本高于3.10,任何版本內(nèi)核的容器都可以運(yùn)行。

2、基礎(chǔ)鏡像較大。完整的Windows Server鏡像servercore大小約為1.5G,最小化的基礎(chǔ)鏡像nanoserver約為100M,而對(duì)應(yīng)的alpine Linux只有5M左右。

3、Hyper-V隔離理論上還能支持Linux容器。LCOW(Linux Containers on Windows)就是使用Hyper-V隔離支持Linux容器,在最新的Docker for Windows中可以作為一項(xiàng)實(shí)驗(yàn)功能開啟。即將發(fā)布的WSL2(Windows Subsystem for Linux 2)由于使用了Hyper-V,也可以實(shí)現(xiàn)對(duì)Linux容器的支持。

(三) Kubernetes對(duì)Windows的局限

Kubernetes對(duì)Windows的支持還在不斷成熟過程中,目前已知存在以下局限性:

1、 最低要求Windows Server 2019及Docker EE 1809。

2、 Kubeadm對(duì)納管Windows節(jié)點(diǎn)的支持尚為beta階段,目前納管Windows的方式較繁瑣。

3、 目前只支持進(jìn)程隔離模式,在該模式下無(wú)法對(duì)容器內(nèi)存上限作出限制。

4、 Windows支持的CNI插件極少,異構(gòu)集群還需要插件同時(shí)支持Linux和Windows節(jié)點(diǎn),因此Flannel成為最常用的選擇。目前對(duì)Flannel的host-gw后端支持為Stable,對(duì)vxlan后端支持仍為Alpha。

5、 不支持NFS類型的存儲(chǔ)。

三、 已有.NET應(yīng)用遷移上云

(一) 測(cè)試環(huán)境搭建

目前Kubernetes對(duì)Windows節(jié)點(diǎn)的支持方式為作為工作節(jié)點(diǎn)納管,本次測(cè)試環(huán)境為Kubernetes v1.17,Windows節(jié)點(diǎn)為Windows Server 2019、Docker EE 18.09,網(wǎng)絡(luò)方案選擇為Flannel的vxlan模式。Windows節(jié)點(diǎn)上的Flanneld和Kube-Proxy支持以Windows服務(wù)或者DaemonSet方式運(yùn)行,本次選擇了更為穩(wěn)定的Windows服務(wù)方式,經(jīng)驗(yàn)證節(jié)點(diǎn)重啟后可以自動(dòng)加入集群。

(二) 基礎(chǔ)鏡像選擇

微軟提供提供四種基礎(chǔ)鏡像供不同種類的應(yīng)用選擇,見下表:

其中Nano Server和Windows Server Core為最常用的選擇,Nano Server的優(yōu)勢(shì)是僅為.NET Core構(gòu)建,鏡像大小相比Server Core小得多。Server Core除提供.NET Framework支持外,還內(nèi)置了PowerShell、WMI等功能。

我行現(xiàn)有的.NET Framwork應(yīng)用上云,如不考慮改造為.NET Core應(yīng)用,則應(yīng)選擇Windows Server Core作為基礎(chǔ)鏡像。

基于Windows Server Core,微軟又提供了如下鏡像供選擇:

根據(jù)應(yīng)用種類和場(chǎng)景選擇基礎(chǔ)鏡像后,再根據(jù)內(nèi)核版本確定鏡像標(biāo)簽,即可完成基礎(chǔ)鏡像選擇。需要注意的是,微軟官方倉(cāng)庫(kù)里的鏡像每月會(huì)有更新,為保持一致性,在下載鏡像時(shí)最好在tag中明確指定哪個(gè)月份的更新。

(三) 鏡像制作

在本小節(jié),我們使用iis作為基礎(chǔ)鏡像制作一個(gè)最簡(jiǎn)單的網(wǎng)站鏡像。Dockerfile如下:

其中index.html內(nèi)容為:

使用如下命令進(jìn)行打包:

docker build -t iis-site .

(四) 本地運(yùn)行

使用如下命令在本地運(yùn)行:

docker run --rm -d --name iis -p 5000:80 iis-site

在瀏覽器中訪問localhost:5000,出現(xiàn)如下頁(yè)面證明運(yùn)行成功。

可以使用命令docker exec -it iis powershell登入運(yùn)行的容器,并查看.NET Framework版本為4.8,如下圖。

上圖中有許多功能未開啟,可以使用Add-WindowsFeature在制作鏡像時(shí)添加Windows功能。

和Linux容器只能看到一個(gè)進(jìn)程不同,在Windows容器中可以看到除應(yīng)用外的其他多個(gè)進(jìn)程。

(五) 在k8s上部署

在鏡像制作完成后,就可以嘗試在Kubernetes上部署了,service和deployment的使用方式和Linux容器一樣,這里不再贅述。由于是Linux和Windows節(jié)點(diǎn)共存的異構(gòu)集群,需要通過類似'/os': windows的nodeSelector來指定Windows容器在Windows節(jié)點(diǎn)上調(diào)度。

參考資料:

《Learning Windows Server Containers》 by Srikanth Machiraju

https://v1-16.docs./docs/setup/production-environment/windows/user-guide-windows-nodes/

https://docs.microsoft.com/en-us/virtualization/windowscontainers/

https:///docs/setup/production-environment/windows/intro-windows-in-kubernetes/

原題:Windows 容器化技術(shù)初探

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日韩一区二区三区有码| 国产又粗又猛又爽又黄| 亚洲一区二区三区四区性色av| 国产一区二区三区四区中文| 日本道播放一区二区三区| 中文字幕亚洲人妻在线视频| 国产原创中文av在线播放| 五月天丁香婷婷狠狠爱| 国产中文字幕一区二区| 亚洲中文字幕乱码亚洲| 欧美日韩一区二区午夜| 久久精品欧美一区二区三不卡| 玩弄人妻少妇一区二区桃花| 欧美成人高清在线播放| 精品高清美女精品国产区| 加勒比东京热拍拍一区二区| 久久精品久久精品中文字幕| 丝袜美女诱惑在线观看| 麻豆欧美精品国产综合久久| 老司机精品国产在线视频| 亚洲内射人妻一区二区| 不卡一区二区高清视频| 欧美特色特黄一级大黄片| 少妇人妻中出中文字幕| 欧美国产日韩在线综合| 激情综合网俺也狠狠地| 亚洲一区二区三区日韩91| 超碰在线播放国产精品| 国产午夜精品福利免费不| 蜜桃传媒视频麻豆第一区| 东北女人的逼操的舒服吗| 国产一区二区三区午夜精品| 九九热在线视频观看最新| 欧美日韩亚洲国产精品| 亚洲国产成人精品一区刚刚| 亚洲男人天堂成人在线视频| 午夜精品在线观看视频午夜| 亚洲男人的天堂就去爱| 中文字幕亚洲精品在线播放| 午夜视频成人在线观看| 欧美成人免费一级特黄|