Kubernetes仪表板不可用

时间:2019-09-12 10:06:47

标签: kubernetes kubernetes-dashboard

这是我第一次安装Kubernetes,并试图了解它的工作原理。我无法解决的第一个问题是使用proxy通过HTTP协议打开Dashboard,方法是访问文档中的URL:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

浏览器的回复是:无法访问此网站。 Localhost拒绝连接。


关于我的环境的小事!

我从配备以下功能的虚拟机开始:

  1. Master:2个VCPU,4GB RAM,Ubuntu 18.04
  2. Worker1:1个VCPU,2GB RAM,Ubuntu 18.04
  3. Worker1:1个VCPU,2GB RAM,Ubuntu 18.04

所有正在运行并已连接到专用网络。

到目前为止,我已经按照installing kubeadm的说明设置了生产环境。比created a single control-plane cluster with kubeadm还没有加入任何节点。

我创建的环境是:

  • Kubernetes 1.15版(以 root 用户身份运行)
  • Docker版本18.09.9(以 root 用户身份运行)
  • Calico 3.8版(以非root用户用户身份运行)
  • 仪表板版本2.0.0-beta4(以非非root用户身份运行)

一切似乎都在运行。

installing kubernetes dashboard

我能看到的是加载时的一些响应

https://master-IP:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

installing kubernetes dashboard

所以我无法通过official Kubernetes Dashboard documentation使用基于HTTP协议的代理来打开/加载Kubernetes Dashboard UI。


P.S。设置新用户使用绑定到该用户的承载令牌登录到仪表板时,我不清楚。是否应该根据changelog of v2.0.0-beta1namespace的值从kube-system更改为kubernetes-dashboard

3 个答案:

答案 0 :(得分:1)

我不确定为什么您无法使用代理看到它。但是,我能够使用NodePort在虚拟机之一的IP上显示Dashboard。您需要编辑仪表板的服务,并将“ ClusterIP”替换为“ NodePort”。

答案 1 :(得分:1)

我看到您想从笔记本电脑访问仪表板。您应该做的是创建一个名为k8s-admin的管理员帐户:

$ brew install kubernetes-cli

然后在笔记本电脑/工作站上设置kubectl: 例如,对于macOS,它看起来像这样(请参见documentation):

~/.kube

设置工作站的代理。在笔记本电脑上创建一个~/.kube/config目录,然后将~/.kube文件从k8s(Kubernetes)主文件中复制到您的$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep k8s-admin | awk '{print $1}') 目录中。

然后获取连接到仪表板所需的身份验证令牌:

$ kubectl proxy

存储此令牌,您将需要它来访问Kubernetes仪表板。现在启动代理:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

现在通过以下方式打开仪表板:

Token

您应该看到 test('Login with no account', () async { Firestore _firestore = Firestore.instance; final QuerySnapshot result = await _firestore .collection(UserFirestoreField.Collection) .where(UserFirestoreField.EmailAddress, isEqualTo: 'email@example.com') .where(UserFirestoreField.Password, isEqualTo: 'wrongpassword') .getDocuments(); final List<DocumentSnapshot> docs = result.documents; print(docs); }); 选项,然后从上一步和登录中复制并粘贴令牌。

您可以遵循此tutorial

答案 2 :(得分:0)

看起来您正在尝试通过您的笔记本电脑在本地访问您的 kubernetes 集群,但它抛出“无法访问此站点。本地主机拒绝连接。”。

您需要创建一个从本地机器到我在其中放入示例隧道命令的实例的隧道 ssh -N -L 8001:127.0.0.1:8001 user@ipadress