我正在尝试在我的集群上启动 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 通信,登录被禁用...