Microk8s通过Nginx-Ingress暴露Dashboard出现版本不匹配及400错误问题
解决方案
版本报错说明
Kubernetes v1.22 已正式废弃extensions/v1beta1版本的Ingress资源,必须使用networking.k8s.io/v1版本,你后续调整后的API版本是正确的。
400错误修复
你不需要启用microk8s proxy,400错误由两个配置缺失导致:
- 缺失后端协议标识:Kubernetes Dashboard默认使用HTTPS对外提供服务,你新版Ingress配置删除了之前的
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"注解,Ingress控制器默认用HTTP协议请求HTTPS后端,直接返回400错误。 - 缺失路径重写规则:Dashboard服务本身没有
/dashboard路径前缀,Ingress转发请求时会原封不动把/dashboard路径传给后端,后端无法匹配路径返回错误。
最终可用Ingress配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: public nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/rewrite-target: /$2 name: dashboard namespace: kube-system spec: rules: - host: main http: paths: - path: /dashboard(/|$)(.*) pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 443
访问说明
- 本地访问的设备需要在hosts文件添加记录:
<MicroK8s节点IP> main,即可通过http://main/dashboard/访问。 - 若无需域名访问,删除
host: main配置项,可直接通过http://<节点IP>/dashboard/访问。 - 登录Dashboard的临时Token可通过命令
microk8s kubectl create token default生成。
内容的提问来源于stack exchange,提问作者petwri
相关产品推荐
相关产品推荐

