我有一个简单的主服务器(Ubuntu 1604),一个工作器(Windows Server 1803)kubernetes集群。
我也有一个Jenkins构建代理(Windows Server 2016),可在管道中构建.NET docker映像。
基本映像:来自microsoft / aspnet:4.7.2-windowsservercore-ltsc2016
我的目标是使用Jenkins构建代理(Windows Server 2016)构建的映像在kubernetes worker(Windows Server 1803)上创建部署。但是,由于Windows映像必须与它们在其上运行的确切Windows版本匹配,因此当前无法立即使用。
“当容器主机和容器映像之间的内部版本号不同时,Windows Server容器将无法启动”
但是,它从同一链接(https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility)描述使用Hyper-V可以做到这一点。
与在容器和主机之间共享内核的标准Windows容器不同,每个Hyper-V隔离容器都有其自己的Windows内核实例。因此,您可以在容器主机和映像中使用不同的OS版本(请参见下面的兼容性列表)。
我从这里使用文档:https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/get-started/install-the-hyper-v-role-on-windows-server,然后运行以下命令并重新启动Windows主机以尝试启用Hyper-V:
Install-WindowsFeature -Name Hyper-V -ComputerName <computer_name> -
IncludeManagementTools -Restart
要运行具有Hyper-V隔离的容器,只需将标签--isolation = hyperv添加到您的docker run命令中即可。
我通过RDPing到1803 worker并运行以下docker命令来尝试此操作,但得到了相同的错误。 (容器操作系统必须与主机操作系统匹配)
docker run microsoft/iis:ltsc2016 --isolation=hyperv
总体而言,我无法使用hyperv运行docker容器,而且似乎也找不到任何有关如何“激活”或将hyperv与kubernetes部署yml文件一起使用的信息。
任何想法都会受到赞赏!
更多详细信息:
上面的链接是此页面的反馈部分https://docs.microsoft.com/en-us/virtualization/windowscontainers/kubernetes/getting-started-kubernetes-windows上一组更新的说明,对我不起作用。