Heapster源码编译,并制作heapster镜像

Heapster源码编译及镜像制作

1.Heapster简介

Kubernetes有个监控—cAdvisor。每个kubernetes Node上都会运行cAdvisor,但是它只会会收集本机以及容器的监控数据,无法监控到整个集群的监控数据。

Heapster是一个收集者,将每个Node上的cAdvisor的数据进行汇总,然后导到第三方工具(如InfluxDB)进行数据持久化,在通过相关的图标展示工具(如grafana)进行展示。

所以说heapster是目前使用比较广泛的一种集群监控数据收集组件,我们可以直接从阿里云或者dockerhub上直接pull到本地镜像库中,但是能够自己手动编译并制作成镜像也是非常不错的,特别是在跨架构平台的服务器上,无法直接从阿里云或者dockerhub上下载到相关的镜像,这时候就需要我们手动编译,编译后做成我们需要的镜像信息。

Heapster使用go语言开发而成,这里假如你的机器上已经安装了go(go的版本必须在1.9.5以上)工具,如果没有就请先安装go的工具。这里不再给大家演示。

编译环境linux centos7

2.Heapster源码下载

我们可以直接从github上下载所需要的版本信息。这里直接以1.5.4版本为例。

下载地址:https://github.com/kubernetes-retired/heapster/tree/v1.5.4

源码的结构如下:

-rw-rw-r--  1 root root  3059 7月  26 2018 code-of-conduct.md
drwxrwxr-x 11 root root   136 7月  26 2018 common
-rw-rw-r--  1 root root   883 7月  26 2018 CONTRIBUTING.md
drwxrwxr-x  4 root root    51 7月  26 2018 deploy
drwxrwxr-x  3 root root  4096 7月  26 2018 docs
drwxrwxr-x  8 root root    95 7月  26 2018 events
drwxrwxr-x  2 root root    37 7月  26 2018 Godeps
drwxrwxr-x  3 root root   125 7月  26 2018 grafana
drwxrwxr-x  2 root root   114 7月  26 2018 hooks
drwxrwxr-x  2 root root    90 7月  26 2018 influxdb
drwxrwxr-x  2 root root   105 7月  26 2018 integration
-rw-rw-r--  1 root root 11324 7月  26 2018 LICENSE
-rw-rw-r--  1 root root  4300 2月  26 17:38 Makefile
drwxrwxr-x 13 root root  4096 7月  26 2018 metrics
-rwxrwxr-x  1 root root  2389 7月  26 2018 README.md
drwxrwxr-x  9 root root   135 7月  26 2018 vendor
drwxrwxr-x  2 root root    23 7月  26 2018 version

Heapster编译主要有两个功能模块:eventer、heapster。

eventer的源码在上面目录中的events文件夹中。

heapster的源码在上面目录中的metrics文件夹中。

3.eventer模块编译

events文件夹中eventer.go是模块的主程序,单独把events文件夹拿出来放在GOPATH/src下面,如果直接使用go build eventer.go编译会报错,报错原因是找不到相关关联包。

包的相关位置:

把关联包都放在GOPATH/src目录下面,目录如下:
drwxr-xr-x  3 root root   15 2月  26 11:20 bitbucket.org
drwxr-xr-x  3 root root   15 2月  26 11:20 cloud.google.com
drwxr-xr-x 36 root root 4096 2月  26 11:04 github.com
drwxr-xr-x  3 root root   14 2月  26 11:06 golang.org
drwxr-xr-x  6 root root   58 2月  26 11:16 google.golang.org
drwxr-xr-x  6 root root   63 2月  26 11:12 gopkg.in
drwxr-xr-x  9 root root  122 2月  26 11:05 k8s.io
​
各个包对应的位置如下:
bitbucket.org:heapster-1.5.4/vendor/
cloud.google.com:heapster-1.5.4/vendor/
github.com:heapster-1.5.4/vendor/
golang.org:heapster-1.5.4/vendor/
google.golang.org:heapster-1.5.4/vendor/
gopkg.in:heapster-1.5.4/vendor/
k8s.io:heapster-1.5.4/vendor/
​
这里需要注意的是k8s.io包,因为在目录中这个包线面只有6个包,如下:
apimachinery
apiserver
client-go
kube-openapi
kubernetes
metrics
缺少了heapster,手动新建一个heapster的文件夹,分别将一下的包放到heapster文件夹下面,如下:
common
events
metrics
version
添加完毕!

下面就可以编译了。

进入GOPATH/src/events目录下面,使用go build eventer.go就可以完成编译,同时会在当前目录下面生成eventer一个二进制文件。如果你设置go的编译位置就去编译位置拿取二进制文件。

此时eventer模块就编译成功。

4.heapster模块编译

heapster模块编译有两种方式:1.通过make编译。2.通过go进行编译。

1.make进行编译

进入到heapster-1.5.4目录下面,执行make指令,如下:

[root@master heapster-1.5.4]# make
​
然后等待,编译完成会在当前目录下面生成heapster二进制文件。
使用make指令进行编译会去调用文件中Makefile文件,这是sh指令,通过这个文件会自动执行编译指令,按照文件中顺序进行编译。

2.go工具进行编译

将metrics文件夹让在GOPATH/src文件夹下面。heapster.go文件就是主程序,但是编译时除了依赖各种包,还会依赖handlers.go和auth.go文件。

步骤同上首先准备依赖包:

把关联包都放在GOPATH/src目录下面,目录如下:
​
bitbucket.org
cloud.google.com
github.com
golang.org
google.golang.org
gopkg.in
k8s.io
包的路径同上。
k8s.io中同样新建heapster文件夹,但是只要添加common、metrics、version三个包。

依赖包添加完毕,下面可以编译了。

编译使用指令go build go build heapster.go handlers.go auth.go这里需要注意,需要三个文件同时编译,以为heapster中程序需要依赖handler和auth程序中定义的函数。

编译完成会在当前目录或者定义的编译路径下面生成heapster二进制文件。

5.制作heapster镜像

完成了编译,如果不做成docker进行几乎没有什么可用,这里我们使用dockerfile来完成进行制作。

首先将编译过后的heapster、eventer放在同一个目录下面,同时新建一个Dockerfile文件,如下:

[root@master docker]# ll
总用量 90916
-rwxrwxrwx 1 root root     1025 2月  26 13:51 ca.crt
-rwxrwxrwx 1 root root      135 2月  26 17:41 Dockerfile
-rwxrwxrwx 1 root root 42109593 2月  26 13:51 eventer
-rwxr-xr-x 1 root root 50975682 2月  26 18:08 heapster
​
这里会有一个ca.crt文件,这个文件需要从k8s集群中获取,如何使用kubeadm安装的集群,默认在/etc/kubernetes/pki文件下面会找到ca.crt文件,一起拷过来,放在同一个目录下面,然后给以权限,使用指令chmod 777 *,全部赋权。

Dockerfile文件的内容如下:

FROM centos:latest
​
COPY heapster eventer /
COPY ca.crt /etc/ssl/certs/
​
#   nobody:nobody
USER 65534:65534
ENTRYPOINT ["/heapster"]
​
​
这里的FROM是基础镜像,可以根据你自己的需要进行设置。

然后使用docker build -f Dockerfile -t heapster:v1.5.4 .命令生成docker镜像。注意最后那个“.”不能省略,如果看不懂这个指令就去学习docker的相关指令用法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值