之前工作用的 k8s 集群(GKE)都是支持 kubectl top node 查看节点资源使用情况的,最近自己本地新搭的集群发现用不了该命令。网上搜索了下发现是由于缺少集群指标收集组件导致,目前常用的集群指标收集组件是 heapstermetrics-server,看官方介绍 heapster 要逐渐被淘汰了,更推荐 metrics-server。但是为了适配后续要安装的 kubernetes-dashboard,先使用 heapster 组件。

heapster 组件是 Kubernetes 官方支持的容器集群监控组件,主要用于收集集群指标数据并存储,收集的数据可以对接可视化图表展示分析,比如 grafana、kubernetes-dashboard。
除了 kubectl top node 依赖于 heapster 收集的指标,kubernetes-dashboard 也需要 heapster,本文使用 helm 来一键部署 heapster 组件。

heapster Chart 使用 helm 官方提供的:https://github.com/helm/charts/tree/master/stable/heapster
对 values 文件做一些定制:

E0806 22:11:05.017143 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.26.10:10255: Get http://192.168.26.10:10255/stats/summary/: dial tcp 192.168.26.10:10255: getsockopt: connection refused

报错主要原因是 k8s 1.12.0 以后已经取消了 kubelet 10255 端口:

—read-only-port int32The read-only port for the Kubelet to serve on with no authentication/authorization (set to 0 to disable) (default 10255) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet’s —config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)

详情见:https://sealyun.com/post/heapster-error/

kubernetes 1.8之后被遗弃

K8s Heapster安装:Error from server (NotFound): the server could not…. (get services http:heapster:)

Heapster是容器集群监控和性能分析工具,HPA、Dashborad、Kubectl top都依赖于heapster收集的数据。但是Heapster从kubernetes 1.8以后已经被遗弃了… 被metrics-server所替代…

添加国内源仓库(暂时不用)

  1. helm repo add repo_name1 https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator
  2. helm repo add gitlab https://charts.gitlab.io/
  3. helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
  4. helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
  5. helm repo remove stable && helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
  6. helm repo update

安装heapster

从github下载charts

image.png

安装

将heapster文件夹上传到服务器上

设置仓库地址并安装

helm install heapster \
  --set image.repository=fishchen/heapster-amd64 \
  --set image.tag=v1.7.0 \
  --set resizer.image.repository=siriuszg/addon-resizer \
  --set resizer.image.tag=1.7 \
  --set rbac.serviceAccountName=admin \
  --set eventer.flags[0]="--source=kubernetes:https://kubernetes.default:443?useServiceAccount=true&kubeletHttps=true&kubeletPort=10250&insecure=true" \
  heapster/

查看运行状态

[root@k8s-master01 helm]# kubectl get pod
NAME                                              READY   STATUS             RESTARTS   AGE
daemonset-example-qgn9z                           1/1     Terminating        0          2d15h
frontend-6t482                                    1/1     Running            1          26h
frontend-92vwl                                    1/1     Running            1          26h
frontend-glstr                                    1/1     Terminating        0          2d15h
frontend-tsmlt                                    1/1     Running            1          26h
heapster-7dfc69b8d4-pxbqf                         2/2     Running            0          7m1

heapster 安装完后就可以正常使用 kubectl top node 了:

[root@master ~]# kubectl top node
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
master   141m         7%     1096Mi          63%
node1    45m          2%     821Mi           47%

如果 heapster pod 有问题一般会报下面错误

[root@master ~]# kubectl top node
error: metrics not available yet