AKS:由于nodeSelector

时间:2019-10-17 04:38:41

标签: kubernetes kubernetes-ingress azure-aks nginx-ingress

今天,我已经在Azure云中部署了AKS服务,并尝试在其上启动测试服务,但是由于以下原因,Ingress pod陷入了Pending状态的错误:

  

0/2个节点可用:2个节点与节点选择器不匹配。

我已经检查了nodeSelector的Nginx入口:

  nodeSelector:
    kubernetes.io/os: linux

为解决此问题,我从部署中删除了nodeSelector,现在一切正常。

以下证据表明我在Kubernetes节点上使用了正确的操作系统:

enter image description here

入口版本为0.26.1-使用manifests from github部署。

因此,很明显如何解决此问题,但是根本原因是什么?是错误还是知识鸿沟?

2 个答案:

答案 0 :(得分:3)

我认为标记节点是一个更好的解决方案:

kubectl label node --all kubernetes.io/os=linux

答案 1 :(得分:1)

我正在使用Kubernetes版本1.13.10。

从Kubernetes版本1.16开始,beta.kubernetes.io/os已被弃用,现在实际的是kubernetes.io/os。因此,Ingress使用的参数符合最新的Kubernetes版本。

要永久解决此问题,必须在版本低于1.16的kubernetes中使用beta.kubernetes.io/os参数。

Kuberentes 1.16 release notes.

我已将patch添加到我的管道中以解决此问题:

kubectl patch deployment nginx-ingress-controller -p '{"spec":{"template":{"spec":{"nodeSelector":{"beta.kubernetes.io/os":"linux"}}}}}