成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Windows 容器化技術初探-- .NET應用上云之路

系統 Windows
容器化技術是當今技術浪潮中支撐微服務和DevOps的重要推動力量。雖說Docker容器技術源自Linux內核相關技術,但微軟、Docker及Kubernetes社區也在不斷完善Windows操作系統對容器化的支持。

 【作者】中國農業銀行研發中心 張少博

一、 引言

容器化技術是當今技術浪潮中支撐微服務和DevOps的重要推動力量。雖說Docker容器技術源自Linux內核相關技術,但微軟、Docker及Kubernetes社區也在不斷完善Windows操作系統對容器化的支持。自v1.14版本起,Kubernetes對Windows容器的支持進入穩定階段。本文試從Windows容器化技術相關概念出發,對Windows .NET應用上云之路的相關問題進行探討。

[[327181]]

二、 Windows容器化技術

(一) Windows容器類型

相對于傳統硬件虛擬化技術,容器技術更加輕量,其代價是容器中應用的運行仍一定程度上依賴于宿主機的操作系統內核提供的能力,多個容器共享宿主機的操作系統內核。也正是因為這個原因,Windows容器無法在Linux上運行,Linux容器也無法在Windows上運行。為提供容器化能力,Windows自Server 2016版開始逐漸加入了內核命名空間、控制組群、分層文件系統等內核功能,以提供類似Linux的容器化能力。

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

 

進程隔離,也稱為Windows Server Containers,Windows Server上的默認隔離模式。在該模式下,宿主機上的多個容器共用該宿主機的操作系統內核,有一定的安全風險,只適用于私有云環境。同時由于共享內核,容器的內核版本應與宿主機的內核版本保持一致,即Windows Server 2019宿主機上只能運行Windows Server 2019的容器。

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

(二) Linux容器 vs Windows容器

與Linux容器相比,Windows容器存在以下主要特點:

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

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

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

(三) Kubernetes對Windows的局限

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

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

2、 Kubeadm對納管Windows節點的支持尚為beta階段,目前納管Windows的方式較繁瑣。

3、 目前只支持進程隔離模式,在該模式下無法對容器內存上限作出限制。

4、 Windows支持的CNI插件極少,異構集群還需要插件同時支持Linux和Windows節點,因此Flannel成為最常用的選擇。目前對Flannel的host-gw后端支持為Stable,對vxlan后端支持仍為Alpha。

5、 不支持NFS類型的存儲。

三、 已有.NET應用遷移上云

(一) 測試環境搭建

目前Kubernetes對Windows節點的支持方式為作為工作節點納管,本次測試環境為Kubernetes v1.17,Windows節點為Windows Server 2019、Docker EE 18.09,網絡方案選擇為Flannel的vxlan模式。Windows節點上的Flanneld和Kube-Proxy支持以Windows服務或者DaemonSet方式運行,本次選擇了更為穩定的Windows服務方式,經驗證節點重啟后可以自動加入集群。

(二) 基礎鏡像選擇

微軟提供提供四種基礎鏡像供不同種類的應用選擇,見下表:

 

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

我行現有的.NET Framwork應用上云,如不考慮改造為.NET Core應用,則應選擇Windows Server Core作為基礎鏡像。

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

根據應用種類和場景選擇基礎鏡像后,再根據內核版本確定鏡像標簽,即可完成基礎鏡像選擇。需要注意的是,微軟官方倉庫里的鏡像每月會有更新,為保持一致性,在下載鏡像時最好在tag中明確指定哪個月份的更新。

 

(三) 鏡像制作

在本小節,我們使用iis作為基礎鏡像制作一個最簡單的網站鏡像。Dockerfile如下:

 

其中index.html內容為:

 

使用如下命令進行打包:

  1. docker build -t iis-site . 

(四) 本地運行

使用如下命令在本地運行:

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

在瀏覽器中訪問localhost:5000,出現如下頁面證明運行成功。

 

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

 

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

和Linux容器只能看到一個進程不同,在Windows容器中可以看到除應用外的其他多個進程。

 

(五) 在k8s上部署

在鏡像制作完成后,就可以嘗試在Kubernetes上部署了,service和deployment的使用方式和Linux容器一樣,這里不再贅述。由于是Linux和Windows節點共存的異構集群,需要通過類似"kubernetes.io/os": windows的nodeSelector來指定Windows容器在Windows節點上調度。

參考資料:

《Learning Windows Server Containers》 by Srikanth Machiraju

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

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

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

責任編輯:武曉燕 來源: twt企業IT社區
相關推薦

2020-06-03 07:59:12

2022-05-10 12:08:59

青云科技QKE容器

2014-12-05 11:23:28

docker騰訊云

2020-04-24 10:42:54

云應用疫情云經濟

2022-09-30 15:28:05

BERT語言模型自然語言

2017-12-06 10:50:57

華為云

2015-09-23 10:12:59

AWSWindows 應用應用云化

2019-11-11 15:52:15

KVMLinuxQemu

2023-08-25 15:41:50

容器微服務

2017-04-24 13:47:30

互聯網

2019-12-23 08:00:00

虛擬機容器VNF

2021-04-20 08:31:59

應用監控高可用

2017-10-23 09:10:52

2018-10-26 11:30:39

華為云CNCF基金會容器

2022-01-11 07:44:27

云計算云應用全棧云

2023-08-23 15:18:06

云計算容器

2017-10-31 14:44:35

華為

2019-03-27 16:51:26

華為云

2012-02-29 15:03:30

2014-11-20 10:55:47

Docker容器技術虛擬化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女在线网站 | 日韩成人免费在线视频 | 999久久久久久久久 国产欧美在线观看 | 天堂免费看片 | 欧美一区二区三区在线免费观看 | 国产精品一区二区三区四区五区 | 亚洲欧洲日韩 | 国产一区二区 | 日韩中文字幕在线观看 | 中文字幕的av | 精品在线观看入口 | 国产成人精品亚洲日本在线观看 | 日韩av一区在线观看 | 免费视频一区 | 国产午夜精品久久久 | jizz亚洲人 | 国产色播av在线 | 亚洲一视频| 美女爽到呻吟久久久久 | 草久久 | 久久国产精品一区二区三区 | 亚洲在线中文字幕 | 国产高清在线观看 | 草久视频| 亚洲高清三级 | 日韩毛片 | 久久久久久久国产精品影院 | 精久久久| 日韩欧美在线观看视频网站 | 欧美精品一二区 | 欧美日韩国产一区二区三区 | 视频一区二区在线观看 | 天天干,夜夜操 | 久久久www成人免费无遮挡大片 | 久久成人亚洲 | 能看的av网站 | 国产午夜精品一区二区三区四区 | 国产视频福利一区 | 91精品国产综合久久久久久 | 国产亚洲精品久久午夜玫瑰园 | 国产精品99久久久久久久久久久久 |