之前工作用的 k8s 集群(GKE)都是支持 kubectl top node 查看节点资源使用情况的,最近自己本地新搭的集群发现用不了该命令。网上搜索了下发现是由于缺少集群指标收集组件导致,目前常用的集群指标收集组件是 heapster 和 metrics-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 文件做一些定制:
- 使用阿里云镜像仓库,Chart 默认使用 k8s.gcr.io,国内是拉不下来镜像的;
- rbac 服务账号使用 admin,使用默认的 default 账号权限太小,收集指标时报错。
- heapster 启动参数 —source 调整成:kubernetes:https://kubernetes.default:443?useServiceAccount=true&kubeletHttps=true&kubeletPort=10250&insecure=true,否则 heapster 会报错:
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所替代…
添加国内源仓库(暂时不用)
helm repo add repo_name1 https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator
helm repo add gitlab https://charts.gitlab.io/
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/
helm repo remove stable && helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update
安装heapster
从github下载charts
安装
将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