Kubernetes部署NginxIngressController后关联资源未创建问题咨询
Nginx Ingress Operator 部署异常排查步骤
1. 核查Operator自身运行状态
- 首先确认Operator Pod是否正常运行,默认部署在
nginx-ingress-operator命名空间,执行命令:
如果Pod不存在、状态非Running,先查看Pod事件定位异常:kubectl get pods -n nginx-ingress-operator
再查看运行日志排查具体报错:kubectl describe pod <Operator-Pod名称> -n nginx-ingress-operatorkubectl logs <Operator-Pod名称> -n nginx-ingress-operator
2. 核查NginxIngressController资源状态
- 查看你创建的CR资源的事件与状态:
重点关注Events字段的报错信息,常见问题包括配置字段非法、权限不足、版本不兼容。kubectl describe NginxIngressController nginx-ingress-controller -n ingress-nginx - 查看CR的完整状态输出确认配置是否被正常识别:
检查status字段是否有异常提示。kubectl get NginxIngressController nginx-ingress-controller -n ingress-nginx -o yaml
3. 确认集群适配与准入插件配置
- Nginx Ingress Operator 0.2.0适配K8s 1.19~1.21版本,你当前使用的1.21.2属于兼容范围,需要确认kube-apiserver是否开启了Operator依赖的准入插件:
MutatingAdmissionWebhook、ValidatingAdmissionWebhook,部分kubeadm部署的集群可能未默认开启,可通过apiserver启动参数核查。
4. 核查RBAC权限配置
- Operator需要足够的权限才能创建Deployment、Service等下游资源,可通过Operator日志中
Forbidden、cannot create类的报错,定位缺失的权限项,补全对应的ClusterRole规则即可。
5. 修复Ingress资源关联配置
- 当前你创建的
my-ingress资源的CLASS字段为空,无法关联到对应Controller导致无法分配地址,可在NginxIngressController的spec中增加ingressClass: nginx配置,同时在Ingress资源中指定ingressClassName: nginx即可完成关联。
内容的提问来源于stack exchange,提问作者Taha
相关产品推荐
相关产品推荐

