Kubernetes集群NGINX Ingress Controller就绪探针503故障求助
解决NGINX Ingress Controller Pod就绪探针失败(503)及CRD资源未找到问题
问题根源:从Pod日志可以明确看出,NGINX Ingress Controller启动时尝试访问virtualservers.k8s.nginx.org、virtualserverroutes.k8s.nginx.org等专属CRD资源,但这些资源未在集群中创建,导致控制器初始化异常,最终触发就绪探针返回503状态码,Pod无法进入就绪状态。
你遗漏了官方安装流程中必须前置执行的CRD安装步骤,以下是修复步骤:
- 清理现有异常的Ingress Controller资源
kubectl delete -f deployments/service/nodeport.yaml kubectl delete -f deployments/deployment/nginx-ingress.yaml kubectl delete -f deployments/common/ingress-class.yaml kubectl delete -f deployments/common/nginx-config.yaml kubectl delete -f deployments/rbac/rbac.yaml kubectl delete -f deployments/common/ns-and-sa.yaml
- 安装NGINX Ingress Controller依赖的CRD资源
# 逐个安装CRD kubectl apply -f deployments/crds/k8s.nginx.org_virtualservers.yaml kubectl apply -f deployments/crds/k8s.nginx.org_virtualserverroutes.yaml kubectl apply -f deployments/crds/k8s.nginx.org_transportservers.yaml kubectl apply -f deployments/crds/k8s.nginx.org_policies.yaml # 或直接批量应用crds目录下所有文件(如果存在) # kubectl apply -f deployments/crds/
- 重新按官方流程部署Ingress Controller
kubectl apply -f deployments/common/ns-and-sa.yaml kubectl apply -f deployments/rbac/rbac.yaml kubectl apply -f deployments/common/nginx-config.yaml kubectl apply -f deployments/common/ingress-class.yaml kubectl apply -f deployments/deployment/nginx-ingress.yaml kubectl create -f deployments/service/nodeport.yaml
- 验证部署状态
执行以下命令确认Pod进入就绪状态:
kubectl get pods -n nginx-ingress
等待输出中Pod的READY列变为1/1,STATUS为Running即可。
补充说明:这些CRD是NGINX Ingress Controller的核心依赖,即使你暂时不需要使用VirtualServer等扩展功能,控制器启动时也会同步这些资源的状态,因此必须提前完成安装。
内容的提问来源于stack exchange,提问作者Inês Gomes
相关产品推荐
相关产品推荐

