今天,我已经在Azure云中部署了AKS服务,并尝试在其上启动测试服务,但是由于以下原因,Ingress pod陷入了Pending
状态的错误:
0/2个节点可用:2个节点与节点选择器不匹配。
我已经检查了nodeSelector的Nginx入口:
nodeSelector:
kubernetes.io/os: linux
为解决此问题,我从部署中删除了nodeSelector,现在一切正常。
以下证据表明我在Kubernetes节点上使用了正确的操作系统:
入口版本为0.26.1-使用manifests from github部署。
因此,很明显如何解决此问题,但是根本原因是什么?是错误还是知识鸿沟?
答案 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"}}}}}