Minikube 1.23+Ubuntu 21.04环境下Ingress未分配IP地址问题求助
问题原因与解决方案
你遇到的问题由两个独立的配置错误导致,分别对应日志中的两条报错:
1. Ingress未指定有效IngressClass
对应错误日志:error="ingress does not contain a valid IngressClass"
Kubernetes 1.19+正式启用networking.k8s.io/v1版本的Ingress API后,要求Ingress资源必须绑定有效的IngressClass,否则Ingress控制器会忽略该资源,自然不会分配IP地址。
解决步骤:
- 先查询集群中已有的IngressClass资源:
kubectl get ingressclass
- 若你使用的是ingress-nginx控制器,通常默认的IngressClass名称为
nginx,可以选择以下任意一种方式配置:- 方式1:直接在Ingress的spec中指定IngressClass,修改后的配置示例:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dashboard-ingress namespace: kubernetes-dashboard spec: ingressClassName: nginx # 新增这一行,值和你查询到的IngressClass名称一致 defaultBackend: service: name: kubernetes-dashboard port: number: 80 rules: - host: dashboard.com http: paths: - path: "/" pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 80
- 方式2:将已有的IngressClass设置为集群默认,后续所有未指定IngressClass的Ingress都会自动绑定:
kubectl annotate ingressclass nginx ingressclass.kubernetes.io/is-default-class="true"
2. Ingress控制器缺少RBAC权限
对应错误日志:User "system:serviceaccount:ingress-nginx:ingress-nginx" cannot update resource "configmaps"
该错误是ingress-nginx控制器使用的ServiceAccount没有足够的权限操作对应命名空间下的ConfigMap资源,导致控制器的选主逻辑无法正常运行。
解决步骤:
该问题一般是安装ingress-nginx时遗漏了RBAC相关配置导致,重新安装完整版的ingress-nginx资源清单,补全ClusterRole、ClusterRoleBinding、Role、RoleBinding等权限配置即可解决。
内容的提问来源于stack exchange,提问作者Georg Gutsche
相关产品推荐
相关产品推荐

