Mac环境下Kind单节点集群安装Nginx Ingress调度失败求助
问题
在Mac系统中使用Kind创建名为devops的单节点Kubernetes集群,按照官方指引安装Nginx Ingress,执行以下命令:
kind create cluster --name devops kubectl apply --filename https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=180s
执行后出现超时,检查节点无污点:
kubectl get node NAME STATUS ROLES AGE VERSION devops-control-plane Ready control-plane 16m v1.25.2 kubectl describe node devops-control-plane | grep Taint Taints: <none>
查看Pod事件发现调度失败,原因是节点不匹配Pod的节点选择器:
kubectl -n ingress-nginx describe pod ingress-nginx-controller-7d68cdddd8-tkzzz ... Node-Selectors: ingress-ready=true kubernetes.io/os=linux Tolerations: node-role.kubernetes.io/control-plane:NoSchedule node-role.kubernetes.io/master:NoSchedule node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 104s default-scheduler 0/1 nodes are available: 1 node(s) didn't match Pod's node affinity/selector. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.
解决方案
问题核心是Ingress Controller Pod的节点选择器要求节点带有ingress-ready=true标签,但你的Kind集群节点默认没有配置该标签,导致Pod无法完成调度。
执行以下命令给集群节点添加缺失的标签:
kubectl label node devops-control-plane ingress-ready=true
标签添加完成后,Pod会自动触发调度流程,你可以再次执行wait命令验证Pod就绪状态:
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=180s
内容的提问来源于stack exchange,提问作者sqr
相关产品推荐
相关产品推荐

