如何在本地访问kubernetes dashboard

当在k8s集群环境中,安装好kubernetes-dashboard,我们需要通过我们自己的电脑去访问dashboard,那么需要在我们的电脑上安装 kubectl安装,别忘记配置 /etc/hosts,然后启动 kubectl proxy,最后访问:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

我们知道,kubectl是用来输入管理k8s命令的工具(或者叫做客户端),在master节点我们会安装kubectl,在自己本机上再安装一个kubectl,总感觉没有这个必要,那能不能直接在master节点上运行kubectl proxy,然后本地电脑访问 master 的地址上的8001,这样不就可以了吗?

我们来实验一下:
在 master 节点上运行: kubectl proxy –address=’0.0.0.0′ –accept-hosts=’.*’ &

其中–address=’0.0.0.0’是必须的,否则只监听127.0.0.1,这样就不能从外面访问了。–accept-hosts=’.*’表示任何的host都可以访问,否则会报告Forbidden的错误。

然后在本地输入地址:http://masterip:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
,可以出现需要输入token的界面,把token输入后点击登录,登录成功了,但是在config的时候,报错了:MSG_LOGIN_UNAUTHORIZED_ERROR

为什么会这样的呢?于是在master本地访问后,发现在config的时候,会把从login获得的token放入localhost这个域中进行传输,而我输入的是masterip,那么dashboard的界面js就放不进去了。

所以,只有一个办法可以了,必须在本地的机器上运行这个地址才可以的,其他地址都不对:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ , 那么怎么才能通过localhost访问到 masterip 呢?

嗯,马上想到了,用代理的办法,于是下载一个CCProxy或者nginx作为代理,这样就可以了。

对于网上还有其他的说法是:ssh端口转发,我觉得没有代理来得方便。