【问题标题】:How to run Windows Containers on Local Kubernetes?如何在本地 Kubernetes 上运行 Windows 容器?
【发布时间】:2019-10-03 01:54:38
【问题描述】:
我有一个 .Net Framework 和 .NetCore 容器,我想在 Kubernetes 中运行它们。我安装了 Docker Desktop for Windows 和 Kubernetes。如何在 Kubernetes 中运行这些 Windows 容器?
This 文档说明了如何在 Kubernetes 上创建一个 Windows 节点,但是很混乱。当我在 Windows 机器上时,我在那里看到了基于 linux 的命令(并且没有提到运行所有这些命令需要什么操作系统)。我在 Windows 10 Pro 机器上。有没有办法在 Kubernetes 上运行这些容器?
当我尝试使用 Windows 容器创建 Pod 时,它失败并显示以下错误消息“无法提取映像 'imagename'; rpc 错误:代码 = 未知 desc = 映像操作系统 'windows' 无法在此平台上使用"
【问题讨论】:
标签:
windows
docker
kubernetes
containers
kubectl
【解决方案1】:
欢迎使用 StackOverflow Srinath
据我所知,您目前无法在本地版本的 Kubernetes 上运行 Windows 容器。当您在 Docker Desktop for Windows 安装中启用 Kubernetes 选项时,Kubernetes 集群只是在 Hyper-V 虚拟机管理程序上的 Linux VM 内运行(具有自己的 Docker Runtime for Linux 容器)。
您的另一个解决方案是使用托管版本的 Kubernetes,其中包含来自任何流行云提供商的 Windows 节点。我觉得比较容易入手的是Azure(如果没有Azure订阅,创建free试用账号,有效期12个月)。
我建议您使用一种旧的方式在 Azure 上运行 Kubernetes,这是一项名为 Azure Container Service aka ACS 的服务,出于一个原因,我已经验证它可以很好地与 Windows Containers 配合使用,尤其是用于测试目的(我无法用它的继任者实现同样的目标,称为AKS):
在 Azure Cloud Shell 中运行以下命令,您的集群将在几分钟内准备就绪。
az group create --name azEvalRG --location eastus
az acs create -g azEvalRG -n k8s-based-win -d k8s-based-win --windows --agent-count 1 -u azureuser --admin-password 'YourSecretPwd1234$' -t kubernetes --location eastus
【讨论】:
-
感谢您的回复。我认为使用 ACS/AKS 可以运行 Windows 容器。但是,我想在本地 pc 上的 kubernetes 上运行我的 Windows 容器,因为这是在 Windows 10 机器上的 K8s 中运行 WIndows 容器的一种要求。检查this
-
根据您的文章:“Windows Server 2019 是唯一支持的 Windows 操作系统,可在 Windows 上启用 Kubernetes 节点”。您的 Windows 10 Pro 操作系统不可能充当本地 Kubernetes 集群的工作器。如果没有支持,您可以使用:Windows Server 版本 1709 或更高版本,但 Windows 10 仍然不在列表中。作为一种补救措施,您仍然可以在 Windows 10 机器上构建和运行 Windows 容器,这里是容器版本兼容性列表:docs.microsoft.com/en-us/virtualization/windowscontainers/…