Mac系统Minikube环境Ingress地址为空、控制器报configmap权限错误求助
问题根因定位&修复步骤
- 检查RoleBinding绑定关系
你提供的ingress-nginx命名空间下的Role权限配置是符合要求的,报错的核心原因大概率是缺少对应的RoleBinding,没有将该Role和ingress-controller使用的服务账号system:serviceaccount:ingress-nginx:ingress-nginx绑定。
执行以下命令检查当前绑定关系:
kubectl get rolebinding -n ingress-nginx -o yaml
如果没有匹配的绑定规则,创建如下RoleBinding资源:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: ingress-nginx-role-binding namespace: ingress-nginx roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: ingress-nginx subjects: - kind: ServiceAccount name: ingress-nginx namespace: ingress-nginx
创建完成后重启ingress控制器Pod生效:
kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx
- 补全Ingress资源的ingressClassName配置
你使用的networking.k8s.io/v1版本Ingress规范要求必须显式指定ingressClassName,或者集群配置了默认的IngressClass。先执行命令查看集群现有IngressClass:
kubectl get ingressclass
如果存在类型为nginx的IngressClass(默认minikube启用ingress插件后会创建名为nginx的IngressClass),修改你的Ingress配置补全字段:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress spec: ingressClassName: nginx # 新增该字段 rules: - host: nginx-testing.com http: paths: - path: / pathType: ImplementationSpecific backend: service: name: nginx-service port: number: 8082
重新apply该Ingress配置即可。
- 验证修复结果
等待ingress控制器Pod重启完成后,执行kubectl get ingress即可看到分配的地址,将nginx-testing.com和对应地址写入本地hosts文件后即可正常访问测试。
内容的提问来源于stack exchange,提问作者Healthy Bowl
相关产品推荐
相关产品推荐

