務器虛擬化是企業IT部門重要基礎之一,虛擬化不僅僅是虛擬機,它還完全重塑了計算,內存,存儲,網絡和桌面之類的基礎設施。Hyper-V是創建和運行虛擬機最重要的管理程序之一。用戶喜歡它,因為它類似于Windows界面,易于使用且安全。
Hyper-V是微軟的虛擬化平臺。它是一個直接在主機硬件上運行的虛擬機管理程序,并且能夠在Windows系統上創建虛擬機(VM)。使用Hyper-V,可以使用一臺物理服務器并虛擬化多個操作系統,以在同一硬件上同時運行。微軟的Hyper-V是VMWare的ESXi,Citrix的XenApp的重要競品。Hyper-V的第一個版本伴隨Windows Server 2008一起發布,自Windows Server 2012和Windows 8起免費使用。
Hyper-V的主要目標之一是為VM提供隔離。每個VM上運行的每個操作系統都在隔離的邏輯單元(稱為“分區”)上執行。系統管理程序創建一個父分區以在其上運行(對于Hyper-V,它必須是Windows),并且可以直接訪問所有硬件資源。系統管理程序還創建子分區來托管每個VM,Hyper-V管理硬件和VM之間的交互。它訪問主機并為VM提供一部分資源來運行其隔離的環境。根據Hyper-V的配置,VM可以訪問存儲,網絡等。
Hyper-V具有基本功能,例如任何虛擬機監控程序。其中一些功能包括計算,災難恢復,備份,優化,安全性,可移植性和遠程管理。
但是人們更喜歡Hyper-V,主要是因為:
如上所述,Windows Server x64版本和Windows(客戶端)可以免費使用Hyper-V。在某些64位版本中,Hyper-V可作為一項功能以及可下載的獨立服務器應用程序使用。
在監控Hyper-V的運行狀況和性能之前,你必須了解工作負載的需求。了解將在VM上運行的軟件的要求和依賴性,將使你更好地了解需要監控哪些參數。比如密切關注內存,CPU,存儲和網絡等指標,將幫助你發現潛在的性能瓶頸或規劃容量;存儲I/O爭用和磁盤延遲等Hyper-V性能問題非常普遍;
但幸運的是,可以使用正確的監控工具來避免,某些軟件和工具在遇到此類問題時甚至可以執行操作。以下將推薦10款用于微軟Hyper-V的監控工具。
SolarWinds Virtualization Manager可以監控和管理Hyper-V環境。該軟件可以跟蹤虛擬機,優化其性能并解決所有問題。它帶有直觀的儀表板,可向你顯示整個Hyper-V環境的運行狀況;儀表板將顯示從低到嚴重狀態的警報,這些警報與諸如內存溢出,磁盤延遲,高CPU使用率等問題相關。
SolarWinds Virtualization Manager還可以顯示所有孤島和共享存儲的視圖,并衡量重要的存儲指標;主動管理和分析存儲I/O性能可以幫助避免存儲爭用問題。
主要特征:
PRTG Network Monitor是功能強大的監控解決方案,可幫助跟蹤IT基礎架構的各個方面。
它基于傳感器工作,傳感器是每個設備或整個網絡上受監控的元素,這意味著可以觀察到設備的單個組件(例如CPU負載),同一設備的各個方面或網絡指標(例如流量)。
PRTG Network Monitor帶有Hyper-V主機服務器監控傳感器,該傳感器可進行完整的Hyper-V監控;該傳感器通過Windows Management Instrumentation(WMI)和特定的性能計數器工作。
傳感器收集并顯示以下信息:
更多傳感器可以幫助你監控Hyper-V基礎結構,其中包括Hyper-V虛擬機傳感器和Hyper-V虛擬存儲傳感器。
因為其基于傳感器,所以收費模式也是基于此。它的免費版本PRTG100可安裝100個監控傳感器。
ManageEngine提供免費的Hyper-V性能監控,可幫助跟蹤運行的Hyper-V服務器和VM。該軟件可以監控服務器的性能,并提供如CPU利用率,內存,磁盤I/O或網絡流量之類的信息。
Hyper-V Performance Monitor還可以查看VM的數量,了解它們的狀態,并在遇到問題時知道它們的嚴重性。該工具還允許跟蹤Hyper-V主機上安裝的每個VM的存儲,內存和網絡利用率。
主要特征:
eG Enterprise是一款應用性能和IT基礎架構監控解決方案。它允許從硬件資源,VM到虛擬桌面應用的Hyper-V環境的端到端監控和管理。eG Enterprise可以部署為無代理或基于代理。該軟件帶有預定義和自定義的監控模型,以提供對Hyper-V性能的完整監控體驗,比如網絡狀態,CPU和內存利用率,硬件資源的運行狀況,虛擬磁盤I/O活動,磁盤空間使用率。此外該軟件隨附這些指標的自動基準,達到基準后,軟件將發送警報并通知用戶。
主要特征:
OpsView Monitor是高級的IT基礎架構監控工具,用于本地,云或虛擬環境中的資源,它支持3500多個插件和服務檢查。該軟件允許與許多應用程序進行開箱即用的集成,包括Hyper-V。
這些集成之一是微軟Hyper-V無代理Opspack,它可以幫助監控主機和VM中的不同指標,使用Windows Management Instrumentation(WMI)進行更快,更輕松的設置。
監控指標包括:
免費版本的Opsview Monitor可監控25個主機。
Site 24x7是為DevOps和IT團隊設計的性能監控解決方案。可以跟蹤整個IT基礎架構,包括服務器,網絡,應用程序,網站,虛擬環境等。
你可以獲得整個Hyper-V環境的完整概述,包括活動,停機和故障的VM。該軟件可以為提供有關VM基本指標的詳細信息,例如其CPU/內存利用率和處理器數量,甚至還可以深入研究每個VM。
主要特征:
Foglight for Virtualization是針對虛擬,云或本地環境的全面監控和管理工具。可以監控,優化資源,進行故障排除并為Hyper-V環境規劃容量。
Foglight for Virtualization帶有自動發現功能,可以查找新的服務器和VM。一旦發現,該軟件即可將其精細的監控和管理過程應用于從物理磁盤到VM的整個虛擬堆棧,還帶有多個內置警報以及可配置的恢復操作。
如果Foglight在VM中發現問題,它將發送警報,并執行諸如重新啟動某些服務或進程,重新啟動或運行腳本的操作。
主要特征:
EventSentry是一個SIEM(安全信息和事件管理),事件日志管理和Windows Server監控解決方案,提供30天免費版本。可以監控Windows服務器的不同方面,例如磁盤空間,運行狀況,性能,清單,虛擬等。它通過不同的檢查來跟蹤Hyper-V的運行狀況,如:
我們經常在window10 或11上安裝docker desktop來運行容器。但是您可能不知道,在windows server上微軟為我們提供了免費的docker企業版,我們可以使用docker企業版無需使用虛擬化,運行Windows容器,也可以使用微軟專門為容器開發的定制虛擬機來同時運行windows和linux容器。
1.在Windows下配置容器環境
https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/about/
什么是容器? 容器是一種松散隔離的環境,可用于生成和運行軟件包。 這些軟件包包括在任何計算環境中快速可靠地運行應用程序所需的代碼和所有依賴項。 我們將這些包稱為容器映像。 容器映像是我們用于分發應用程序的單位。
https://docs.microsoft.com/zh-cn/learn/modules/intro-to-docker-containers/2-what-is-docker
安裝容器環境,打開powershell輸入以下命令
Install-Module -Name DockerMsftProvider -Repository PSGallery –Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Restart-Computer -Force
因為網絡的原因,如果之前的命令失敗的話,我們可以通過以下命令直接下載安裝包,并放到指定的位置。
我們在原有安裝命令后加入 -debug參數。在回答問題時選A或y
這里我們可以看到安裝程序從哪里下載安裝程序,并且放到哪里去。
https://dockermsft.azureedge.net/dockercontainer/docker-19-03-5.zip
C:\Users\ADMINI~1\AppData\Local\Temp\DockerMsftProvider\Docker-19-03-5.zip
目前最新版是20.10.9,下載地址是
|https://dockermsft.azureedge.net/dockercontainer/docker-20-10-9.zip
我們可以掛迅雷的軟件下載后放到C:\Users\ADMINI~1\AppData\Local\Temp\DockerMsftProvider\目錄下
然后重新執行安裝命令
如果是升級安裝,可以加入 -force參數,即
Install-Package -Name docker -ProviderName DockerMsftProvider -dubug -force
windows系統會自動刪除原有服務
如果是通過下載包來安裝,需要在刪除服務后,再次執行,記得取消 -force參數, force參數會強制下載安裝包
Install-Package -Name docker -ProviderName DockerMsftProvider
安裝完成后powershell
start-service docker
啟動docker 服務
docker version
確認版本為docker企業版
可以看到同時支持win和linux存儲
測試:
docker pull mcr.microsoft.com/windows/servercore:ltsc2019
使用docker:
隔離示例 創建容器 通過 Docker 管理 Hyper-V 隔離容器與管理進程隔離容器幾乎完全相同。 若要通過 Docker 創建采用 Hyper-V 隔離的容器,請使用 --isolation 參數來設置 --isolation=hyperv。
docker run -it --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019
或者修改C:\ProgramData\docker\config\daemon.json,加入
{
"exec-opts":["isolation=hyperv"]
}
若要通過 Docker 創建采用進程隔離的容器,請使用 --isolation 參數來設置 --isolation=process。
docker run -it --isolation=process mcr.microsoft.com/windows/servercore:ltsc2019
https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon
2 .windows 平臺運行linux 容器
啟用實驗性功能
C:\ProgramData\docker\config\daemon.json
{
"experimental": true
}
啟用實驗性功能powershell
Set-Content -Value "`{`"experimental`":true`}" -Path C:\ProgramData\docker\config\daemon.json
安裝linux內核
C:\> cd 'C:\Program Files\'
C:\Program Files> mkdir "Linux Containers"
C:\Program Files> cd '.\Linux Containers\'
C:\Program Files\Linux Containers> curl -OutFile release.zip https://github.com/linuxkit/lcow/releases/download/v4.14.35-v0.3.9/release.zip
C:\Program Files\Linux Containers> Expand-Archive -DestinationPath . .\release.zip
安裝hyper-V (server)
Install-WindowsFeature Hyper-V –IncludeManagementTools –Restart
--platform linux
Error response from daemon: failed to start service utility VM (createreadwrite): kernel 'C:\Program Files\Linux Containers\kernel' not found
docker run -d -p 1688:1688 --name kms --restart=always --platform linux --isolation=hyperv teddysun/kms
Restart-Service docker
docker pull mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
https://hub.docker.com/_/microsoft-windows-servercore-iis
因為我們不一定每次都需要開啟hyper-V,所以我們可以建立開啟hyper-V的引導菜單,
bcdedit /copy {current} /d "Windows 10 (開啟 Hyper-V)"
隨后會提示已經創建了另外一個啟動菜單項,記下 { } 中的一串代碼。
bcdedit /set {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} hypervisorlaunchtype auto
命令,將上面的代碼替換掉這里的紅色XXX代碼。
bcdedit /set hypervisorlaunchtype off
官方文檔供參考:
https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon
https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/management/manage_remotehost
https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-containers/hyperv-container
{
"exec-opts":["isolation=hyperv"]
}
https://www.portainer.io/installation/
Deploy Portainer Server on a standalone WINDOWS Docker Host (running Windows Containers) – note must be Windows 1803 or newer.
$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine -v portainer_data:C:\data portainer/portainer
另外,目前windows admin center也已經支持了容器的圖形化管理
以上是幾年前在windows2016上實驗使用docker的筆記,稍作修改。已經算是老技術了。目前在windows2019上依然可以使用。同時docker公司依然提供了最新版本的支持。僅供參考。
目前在windows上運行Linux容器的功能已經下放到win10,11。是通過docker desktop及WSL2 來實現,但是比起windows server上的docker ee版 來說,docker desktop存在諸多限制。如果您有Windows/linux混合容器要跑,或者在生產環境運行Windows容器,目前最佳環境還是windows server。之前的windows server作為k8s的work node,已經通過了CNCF的官方認證。而紅帽等第三方廠家目前已經實現了在k8s上通過虛擬化來實現對windows應用的支持,到底是在k8s中運行windows節點來運行Windows應用,還是在k8s通過虛擬化來運行Windows應用,這個問題讓我們拭目以待吧。
更新,由于目前業界都已經開始拋棄docker,微軟也于2022年9月開始不再提供docker ee了。
在過渡到 containerd 期間,將繼續支持在 AKS 和 AKS-HCI 中運行 Windows Server 容器的客戶。微軟的決定與Kubernetes 社區最近采取的行動一致,即放棄對 dockershim 的維護,這是 Kubernetes 通過容器運行時接口 (CRI) 保持運行時不可知的努力的一部分。2022 年 9 月末,微軟將不再維護 DockerMsftProvider API,客戶應前往Mirantis 站點進行安裝。尋求 Microsoft 支持的客戶在 2022 年 9 月之前仍然可以免費使用 Mirantis 服務,之后客戶可以購買 Mirantis 的年度支持合同。客戶可以選擇使用來自開源Moby 項目的運行時運行他們的 Windows Server 容器。請注意,Moby 項目不為Mirantis Container Runtime 中的幾個企業功能提供正式支持。
這也就是說,之前docker把docker ee出售給了Mirantis,在2022年9月之后,需要花錢購買相關服務了。或者轉向containerd。或者轉向開源Moby項目。
https://techcommunity.microsoft.com/t5/containers/updates-to-the-windows-container-runtime-support/ba-p/2788799
win10支持docker的blog
https://www.docker.com/blog/docker-for-windows-18-02-with-windows-10-fall-creators-update/