Kubernetes集群部署Nginx ingress controller持续失败问题求助
Nginx Ingress Controller部署异常解决方案
- 手动补全缺失的根CA ConfigMap
报错提示的kube-root-ca.crt是集群各命名空间下默认同步的根CA证书配置,你的集群因准入控制器配置异常未在ingress-nginx命名空间下生成该资源,可手动复制kube-system下的对应资源:# 确认kube-system下存在该ConfigMap kubectl get cm kube-root-ca.crt -n kube-system # 复制到ingress-nginx命名空间 kubectl get cm kube-root-ca.crt -n kube-system -o yaml | sed 's/namespace: kube-system/namespace: ingress-nginx/g' | kubectl apply -f - # 删除异常Pod触发重建 kubectl delete pod -l app.kubernetes.io/name=ingress-nginx -n ingress-nginx - 修复kube-apiserver准入控制器配置
该问题根源是kube-apiserver未开启必要的准入插件,检查kube-apiserver启动参数,确保--enable-admission-plugins字段包含ServiceAccount、ConfigMapServiceAccountTokenProjection两个插件,修改配置后重启kube-apiserver,后续新建命名空间会自动生成对应根CA配置。 - 调整部署清单适配非云厂商环境
你当前使用的是公有云场景的部署清单,默认会创建LoadBalancer类型的Service,本地虚拟机、未绑定负载均衡的EC2实例部署时会因Service无法分配IP导致controller组件异常重启,可修改部署清单中ingress-nginx-controller的Service类型为NodePort或ClusterIP后重新部署。 - 重置异常ServiceAccount资源
如果上述操作后Pod仍报错,删除ingress-nginx命名空间下关联的ServiceAccount,触发自动重建:kubectl delete sa -l app.kubernetes.io/name=ingress-nginx -n ingress-nginx kubectl delete pod -l app.kubernetes.io/name=ingress-nginx -n ingress-nginx
内容的提问来源于stack exchange,提问作者raza sikander
相关产品推荐
相关产品推荐

