Kubernetes 仪表板无法访问(错误 404)

Kubernetes 仪表板无法访问(错误 404)

我正在尝试在我的集群上启动 Kubernetes 仪表板。

仪表板是使用 Kubespray 安装的,所以我很确定它安装正确(至少它的 pod 运行时没有错误)。

集群的设置概述如下:

$ kubectl get svc --all-namespaces
NAMESPACE     NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes                  ClusterIP   10.65.0.1      <none>        443/TCP                  2d
kube-system   coredns                     ClusterIP   10.65.0.3      <none>        53/UDP,53/TCP,9153/TCP   2d
kube-system   dashboard-metrics-scraper   ClusterIP   10.65.43.101   <none>        8000/TCP                 2d
kube-system   kubernetes-dashboard        ClusterIP   10.65.10.7     <none>        443/TCP                  2d

$ kubectl get ingress --all-namespaces
NAMESPACE     NAME        CLASS    HOSTS   ADDRESS   PORTS   AGE
kube-system   dashboard   <none>   *                 80      4m22s

$ cat dash_ingress.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: kube-system
  name: dashboard
  selfLink: /api/dashboard
spec:
  defaultBackend:
    service:
      name: kubernetes-dashboard
      port:
        number: 443

假设我的服务器在 IP 10.11.12.13 上运行,当我尝试访问http://10.11.12.13/api/dashboard,我收到错误 404。当尝试https://相反,Chrome 会报告ERR_CONNECTION_TIMED_OUT。除此之外,所有http://调用没有任何后缀的 IP 也会出现 404 错误。

nginx 的错误 404 是一件非常积极的事情,因为至少它nginx似乎工作正常,但如何访问仪表板或如何将其公开为可访问的?我应该尝试其他端口(8443 已检查 - 最终像所有https://呼叫)或者其他什么?

编辑:

重新配置Ingress对象后如下(添加注释):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: kube-system
  name: dashboard
  selfLink: /api/dashboard
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/service-upstream: "true"
spec:
  defaultBackend:
    service:
      name: kubernetes-dashboard
      port:
        number: 443

我发现打电话https://10.11.12.13:6443/给出错误 403 并返回以下状态对象:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path 
\"/api/dashboard\"",
  "reason": "Forbidden",
  "details": {},
  "code": 403
}

但不确定这是否来自仪表板或其他 Kubernetes 服务(仪表板配置了 Ingress,但我仍然不了解这个主题)。

编辑#2:

呼唤http://10.11.12.13重定向至http://10.11.12.13/#/登录页面,页面要求输入令牌或配置文件。但由于缺少 https 通信,登录被禁用...

相关内容