我一直在使用Kubernetes Orchestra进行Windows容器从Azure容器注册表到Azure容器服务的部署,之前运行良好。 现在,我正在尝试创建Windows的acs kubernetes群集,但是create命令仅创建一个主节点,并且在部署时出现以下错误没有可用节点与以下所有谓词匹配:: MatchNodeSelector (1)
我已点击此链接https://docs.microsoft.com/en-us/azure/container-service/kubernetes/container-service-kubernetes-windows-walkthrough来创建基于Windows的kubernetes集群。
这是我用来创建集群的命令
az acs create --orchestrator-type=kubernetes \
--resource-group myResourceGroup \
--name=myK8sCluster \
--agent-count=2 \
--generate-ssh-keys \
--windows --admin-username azureuser \
--admin-password myPassword12
根据上述文档,以上命令应创建一个名为myK8sCluster的群集,该群集具有一个Linux主节点和两个Windows代理节点。
为了验证集群的创建,我使用了以下命令
kubectl get nodes
NAME STATUS AGE VERSION
k8s-master-98dc3136-0 Ready 5m v1.7.7
根据以上命令,它表明它仅创建Linux主节点,而不创建两个Windows代理节点。
但就我而言,我需要Windows代理节点在群集中部署基于Windows的容器。
因此,我假设由于这个原因,我在部署时遇到以下错误:没有与以下所有谓词相匹配的节点:MatchNodeSelector(1)
答案 0 :(得分:0)
正如文档所指出的,不建议使用带有Kubernetes目标的ACS。您想使用AKS(Azure Kubernetes即服务)。
要解决此问题,请从这里开始:https://docs.microsoft.com/en-us/azure/aks/windows-container-cli
如果选择在本地安装latest version of the CLI,或使用Azure Cloud Shell,请确保已在计算机上安装了does not auto-polyfill。
按照指南中的其余步骤进行操作,因为它会引导您完成所有命令。
答案 1 :(得分:0)
对于您的问题,据我所知,可能的原因是您需要启用WindowsPreview羽毛。您可以通过以下CLI命令进行检查:
az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/WindowsPreview')].{Name:name,State:properties.state}"
没关系的话,您还需要注意Kubernetes版本。当我使用您已使用的命令时,将成功创建Windows节点,但是当我执行命令kubectl get nodes
时,它仅显示主节点。即使我可以看到组中的Windows节点。
然后我尝试使用带有附加参数--orchestrator-version
的命令,并将值设置为1.12.7,并将整个命令设置如下:
az acs create --orchestrator-type=kubernetes \
--resource-group myResourceGroup \
--name=myK8sCluster \
--agent-count=2 \
--generate-ssh-keys \
--windows --admin-username azureuser \
--admin-password myPassword12 \
--orchestrator-version \
--location westcentralus
然后运行良好,命令kubectl get nodes -o wide
如下所示:
但是您知道,ACS将被弃用。因此,我建议您在预览版中使用AKS with Windows node。或者,您可以使用aks-engine,因为AKS引擎是ACS-Engine项目的下一个版本。