|
总算在成功的部署了k8s之后,我打算再部署一下k8s的web UI:dashboard.
网上主要的部署方法都是一些IT用yaml文件去生成的dashboard服务。然后所有的文章或多或少的都有点问题,不是步骤不一样了进行不下去了,内容或文件过期,或都就是作者认为某些内容是大家都懂的于是怱略了一些步骤,但是我已经进行不下去了。
首先是拉镜像的问题,dashboard的镜像依旧是在“某个外国知名搜索引擎”服务器上的没法直接拉下来,所以依旧使用从镜像服务器上下载之后再用docker tag命令更改名称的方法来解决问题。
官方的镜像地址是:k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
我找了一个镜像的地址:mirrorgooglecontainers (下载命令为:docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1)
接下来是改名
dockertagmirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1dockerrmimirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1然后有了镜像之后,开启dashboard的pod。网上也有各种yaml文件版本,我试下来最靠谱的是以下文件。将它命名为kubernetes-dashboard.yaml。
kind:ServiceapiVersion:v1metadata:labels:k8s-app:kubernetes-dashboardname:kubernetes-dashboardnamespace:kube-systemspec:type:NodePortports:-port:443targetPort:8443nodePort:30001selector:k8s-app:kubernetes-dashboard其中30001可以自己改,在k8s允许的范围内内改成自己想要的端口。这个端口是应用于物理机上的而不是pod网络。非k8s集群的集群可以通过这个端口去访问(毕竟还是给浏览器去访问的。)我已开始没改端口,但是没有意识到30001端口已经被其他的服务给占掉了,所以yaml文件运行后没有起到起到什么作用。我在这里选了一个30012端口。
用这个文件来安装dashboard
kubectlcreate-fkubernetes-dashboard.yaml接下来是用浏览器登陆,首先找到dashboard是在那个节点上运行的,
kubectlgetpods--all-namespaces-owide|grepdashboard|awk'{print$8}'然后在浏览器里访问这个node节点。网址要加上https://<节点的ip或域名>:<前面yaml文件中的nodePort的值>。我用的浏览器是chrome,立即显示了“证书不受信任”的页面,而且高级选项里继续选项也没有,就无法访问了。上网查了一下这个问题的解决方法,原因是证书过期了(0001年1月3日开的证书,整整过期2000+年),只有firefox能够添加例外。而真正的解决方法是替换证书。在网上找到最好的方法如下文。
mkdirkey&&cdkeyopensslgenrsa-outdashboard.key2048opensslreq-new-outdashboard.csr-keydashboard.key-subj'/CN=172.19.0.48'opensslx509-req-indashboard.csr-signkeydashboard.key-outdashboard.crtkubectldeletesecretkubernetes-dashboard-certs-nkube-systemkubectlcreatesecretgenerickubernetes-dashboard-certs--from-file=dashboard.key--from-file=dashboard.crt-nkube-system#新的证书kubectldeletepodkubernetes-dashboard-746dfd476-b2r5f-nkube-system#重启服务其中有一些地方要根据实际情况改动,例如第三句的IP地址要改成node节点的,还有最后一句删除pod名字也得改一下。获取的命令为
kubectlgetpods--all-namespaces-owide|grepdashboard|awk'{print$2}'然后在浏览器里就可以跳过证书受信问题了。接下来的问题是登陆界面,有两种登陆的方式,个人觉得还是token这种方便一点。网上也有高手总结了一下获取token命令的方法。
kubectl-nkube-systemdescribe$(kubectl-nkube-systemgetsecret-nkube-system-oname|grepnamespace)|greptoken将获取的token复制到浏览器的界面中,就可以登陆dashboard了。 |
|