kubernetes dashboard源码编译运行(主机+docker)

shadow0 2018-02-06

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分钟左右。
  • 如果你看到以下界面,那么恭喜你,启动成功了。
    kubernetes dashboard源码编译运行(主机+docker)
     
  • 访问ip:9090进行访问。界面挺漂亮的。

  • kubernetes dashboard源码编译运行(主机+docker)
     
  • 如果你想在docker中运行,则需要编译打包成镜像
  • 使用命令gulp docker-image:head  ,head是版本号。过程时间较长
  • 通过docker images 可以查询到打包后的镜像。

  • kubernetes dashboard源码编译运行(主机+docker)
     
  • 镜像运行,可以通过k8s集群进行运行。
  • 如果你使用了上面的链接搭建了一个小的集群,则进入目录/etc/ansible/manifests/dashboard
  •  vi kubernetes-dashboard.yaml 
  • 将镜像mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.6.3改成本地kubernetes/kubernetes-dashboard-amd64:head
  • 并且加上imagePullPolicy: IfNotPresent

  • kubernetes dashboard源码编译运行(主机+docker)
     
  • 执行命令 kubectl create -f .   进行创建
  • 通过kubectl get pod --all-namespaces  查看所有pod

  • kubernetes dashboard源码编译运行(主机+docker)
     
  • 出现以上则ok,通过地址https://10.13.11.25:6443/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/#!/cluster?namespace=default进行访问

  • kubernetes dashboard源码编译运行(主机+docker)

修改前端界面

  • 源码目录在dashboard-1.8.2/src/app下面
  • 其中frontend是前端界面(使用angular开发)
  • backend是后端(采用go 、go-restful开发)
  • 如果修改前端界面,比如首页,修改完毕之后,则界面F5进行刷新则可以直接看到效果(非Docker容器)
  • 接下来作者就要学习angular前端框架了。

注意事项(作者在搭建环境的时候踩了好多雷和坑):

  • 具体的就不一一细说了,重要的是前期准备,环境的搭建。
  • 一个是jdk版本的问题
  • 要注意设置KUBE_DASHBOARD_APISERVER_HOST这个环境变量
  • 修改serve.js
  • 创建软连接等。

相关推荐