kubernetes dashboard源码编译运行(主机+docker)
kubernetes dashboard 介绍
- 是一款开源软件,它提供了界面化视图,让k8s集群管理者,可以通过界面化进行管理k8s集群。比如pod的创建、deployment的创建等等。
- 在kubernetes dashboard 源码编译安装之前,你需要在linux(作者使用虚拟机centos7)上部署一个k8s集群,单机或者多节点均可。简易搭建k8s集群可以参考https://github.com/gjmzj/kubeasz自动化搭建K8S集群。
编译环境前提条件
- Docker,如果前面已经使用脚本搭建完成K8S集群,则机器上会自动存在Doker。
- Golang 1.8+ (可以使用 yum install -y golang 进行安装),kubernetes dashboard 采用angular+go进行开发的,所以需要安装golang来运行go语言环境。
- Node.js 8+ and npm 5。
- 1.可以先去https://npm.taobao.org/mirrors/node进行查看所需要的版本,作者使用的是8.5.0版本。
- 2.下载nodejs:wget -c https://npm.taobao.org/mirrors/node/v8.5.0/node-v8.5.0-linux-x64.tar.xz
- 3.解压tar -xvf node-v8.5.0-linux-x64.tar.xz
- 4.进入node-v8.5.0-linux-x64/bin
- 5.测试
- [root@kubernetes bin]# ./node -v
- v8.5.0
- 6.出现版本号就ok,然后建立软连接到/usr/local/bin
- ln -s 完整目录/node-v8.5.0-linux-x64/bin/npm /usr/local/bin/npm
- ln -s 完整目录/node-v8.5.0-linux-x64/bin/node /usr/local/bin/node
- 7.测试
- [root@kubernetes bin]# node -v
- v8.5.0
- [root@kubernetes bin]# npm -v
- 5.3.0
- JDK
- 作者编译的是kubernetes 1.8.2版本的,最初使用的是jdk1.7最后导致编译报错。最终使用jdk1.8得以解决。
- Gulp.js 3.9+,这个是 一个自动化构建工具, 使用命令npm install --global gulp-cli 进行安装
- 安装完毕执行
- [root@kubernetes source]# gulp -v
- [18:42:54] CLI version 2.0.1
- 发现版本是2.0.1这个先不用管,如果发现命令没有找到,那就去node-v8.5.0-linux-x64/bin目录下找,同样加入软连接即可。
下载源码
- github 地址是https://github.com/kubernetes/dashboard
- 作者本次并未下载head版本,下载的是1.8.2版本,地址是https://github.com/kubernetes/dashboard/archive/v1.8.2.tar.gz
- wget -c https://github.com/kubernetes/dashboard/archive/v1.8.2.tar.gz
- 解压 tar -zvxf v1.8.2.tar.gz
- cd dashboard-1.8.2
- 执行命令 npm i --unsafe-perm,这个命令是下载依赖库,时间较长。
- 执行完毕,在执行
- [root@kubernetes dashboard-1.8.2]# gulp -v
- [18:47:27] Failed to load external module @babel/register
- [18:47:27] Requiring external module babel-register
- [18:47:27] CLI version 2.0.1
- [18:47:27] Local version 3.9.1
- 发现本地版本是3.9.1,全局是2.0.1.
环境已经准备好,开始编译
- 设置一个环境变量
- 可以通过修改/etc/profile文件实现
- 在最后加上export KUBE_DASHBOARD_APISERVER_HOST="http://127.0.0.1:8080"
- 这个是kubernetes 集群 kube-serverapi的地址,请根据实际进行修改
- 修改build/serve.js
- 找到target: conf.frontend.serveHttps
- 将https://localhost:${conf.backend.secureDevServerPort}和http://localhost:${conf.backend.devServerPort}中的localhost修改为127.0.0.1
- 原因是,作者在配置时,如果是localhost,则绑定的127.0.0.1:9090,然后通过其他主机进行访问时ip:9090,访问不到。修改之后即可。
- 执行 gulp build 进行编译源码。该时间较长。
- 编译成功,执行 gulp serve进行启动,该时间作者启动使用了8分钟左右。
- 如果你看到以下界面,那么恭喜你,启动成功了。
- 访问ip:9090进行访问。界面挺漂亮的。
- 如果你想在docker中运行,则需要编译打包成镜像
- 使用命令gulp docker-image:head ,head是版本号。过程时间较长
- 通过docker images 可以查询到打包后的镜像。
- 镜像运行,可以通过k8s集群进行运行。
- 如果你使用了上面的链接搭建了一个小的集群,则进入目录/etc/ansible/manifests/dashboard
- vi kubernetes-dashboard.yaml
- 将镜像mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.6.3改成本地kubernetes/kubernetes-dashboard-amd64:head
- 并且加上imagePullPolicy: IfNotPresent
- 执行命令 kubectl create -f . 进行创建
- 通过kubectl get pod --all-namespaces 查看所有pod
- 出现以上则ok,通过地址https://10.13.11.25:6443/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/#!/cluster?namespace=default进行访问
修改前端界面
- 源码目录在dashboard-1.8.2/src/app下面
- 其中frontend是前端界面(使用angular开发)
- backend是后端(采用go 、go-restful开发)
- 如果修改前端界面,比如首页,修改完毕之后,则界面F5进行刷新则可以直接看到效果(非Docker容器)
- 接下来作者就要学习angular前端框架了。
注意事项(作者在搭建环境的时候踩了好多雷和坑):
- 具体的就不一一细说了,重要的是前期准备,环境的搭建。
- 一个是jdk版本的问题
- 要注意设置KUBE_DASHBOARD_APISERVER_HOST这个环境变量
- 修改serve.js
- 创建软连接等。
相关推荐
朱培知浅ZLH 2020-11-16
cdbdqn00 2020-11-12
达观数据 2020-11-11
JustinChia 2020-11-11
远远的山 2020-11-09
jingtao 2020-11-08
大叔比较胖 2020-10-30
gracecxj 2020-10-30
onepiecedn 2020-10-29
kunyus 2020-10-28
JustHaveTry 2020-10-27
锋锋 2020-10-26
hubanbei00的家园 2020-10-25
谢恩铭 2020-10-23
btqszl 2020-10-21
kaidiphp 2020-10-13
guchengxinfen 2020-10-12
liverlife 2020-10-10
BigDataMining 2020-10-08