一起来学k8s 07.安装metrics-server和heapster
Metrics-Server
Kubernetes从1.8版本开始,CPU、内存等资源的metrics信息可以通过 Metrics API来获取,用户可以直接获取这些metrics信息
环境
192.168.48.101 master01
192.168.48.201 node01
192.168.48.202 node02
Metrics API
- 通过Metrics API我们可以获取到指定node或者pod的当前资源使用情况,API本身不存储任何信息,所以我们不可能通过API来获取资源的历史使用情况。
- Metrics API的获取路径位于:
/apis/metrics.k8s.io/
- 获取Metrics API的前提条件是metrics server要在K8S集群中成功部署
- 更多的metrics资料请参考:
<https://github.com/kubernetes/metrics>
Metrics Install
由于官方已经弃用heapster,现metrics-server作为其替代方案,当前最新版本为v0.3.3
官方项目地址
https://github.com/kubernetes-incubator/metrics-server
下载项目
git clone https://github.com/kubernetes-incubator/metrics-server
yaml文件在/root/metrics-server/deploy/1.8+
[root@master01 ~]# cd metrics-server/deploy/1.8+/
[root@master01 1.8+]# ls
aggregated-metrics-reader.yaml auth-delegator.yaml auth-reader.yaml metrics-apiservice.yaml metrics-server-deployment.yaml metrics-server-service.yaml resource-reader.yaml
修改yaml文件,添加参数
vim metrics-server-deployment.yaml- name: metrics-serverimage: k8s.gcr.io/metrics-server-amd64:v0.3.3imagePullPolicy: IfNotPresentargs:- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP- --kubelet-insecure-tls
Metrics镜像
k8s.gcr.io/metrics-server-amd64:v0.3.3
镜像下载
链接: https://pan.baidu.com/s/12d-2XTzw1gwLR52erGQ9hg 提取码: yxan
导入Metrics镜像
docker load -i metrics-0.3.3.tar.gz
创建Metrics
[root@master01 ~]# cd metrics-server/deploy/1.8+/
[root@master01 1.8+]# kubectl apply -f .
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.extensions/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created[root@master01 1.8+]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-fb8b8dccf-jfm2m 1/1 Running 3 8d
coredns-fb8b8dccf-r8tqp 1/1 Running 3 8d
etcd-master 1/1 Running 2 8d
kube-apiserver-master 1/1 Running 2 8d
kube-controller-manager-master 1/1 Running 2 8d
kube-flannel-ds-amd64-26xjf 1/1 Running 3 8d
kube-flannel-ds-amd64-82s7n 1/1 Running 3 8d
kube-flannel-ds-amd64-sd2j9 1/1 Running 3 8d
kube-proxy-792hk 1/1 Running 2 8d
kube-proxy-88cgt 1/1 Running 3 8d
kube-proxy-frgtq 1/1 Running 2 8d
kube-scheduler-master 1/1 Running 2 8d
kubernetes-dashboard-5f7b999d65-9v5f9 1/1 Running 0 46m
metrics-server-c9f69c698-c7zl9 1/1 Running 0 5s
验收
部署成功后,达到如下结果,则为正常:
[root@master01 ~]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 86m 4% 963Mi 25%
node01 26m 1% 522Mi 13%
node02 21m 1% 503Mi 13% [root@master01 ~]# kubectl top pods --all-namespaces
NAMESPACE NAME CPU(cores) MEMORY(bytes)
default demo-deploy-8675c97685-vhncn 0m 2Mi
default demo-deploy-8675c97685-w7md2 0m 2Mi
default demo-pod 0m 4Mi
kube-system coredns-fb8b8dccf-jfm2m 2m 13Mi
kube-system coredns-fb8b8dccf-r8tqp 2m 13Mi
kube-system etcd-master 13m 71Mi
kube-system kube-apiserver-master 18m 297Mi
kube-system kube-controller-manager-master 9m 50Mi
kube-system kube-flannel-ds-amd64-26xjf 2m 12Mi
kube-system kube-flannel-ds-amd64-82s7n 2m 17Mi
kube-system kube-flannel-ds-amd64-sd2j9 2m 18Mi
kube-system kube-proxy-792hk 1m 17Mi
kube-system kube-proxy-88cgt 1m 19Mi
kube-system kube-proxy-frgtq 1m 16Mi
kube-system kube-scheduler-master 1m 15Mi
kube-system kubernetes-dashboard-5f7b999d65-9v5f9 1m 11Mi
kube-system metrics-server-c9f69c698-c7zl9 1m 13Mi
Heapster
目前dashboard插件如果想在界面上显示资源使用率,它还依赖于heapster
;另外,测试发现k8s 1.8版本的kubectl top
也依赖heapster
,因此建议补充安装heapster
,无需安装influxdb
和grafana
。
准备heapster.yaml
vim heapster.yaml---
apiVersion: v1
kind: ServiceAccount
metadata:name: heapsternamespace: kube-system
---apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: heapster
subjects:- kind: ServiceAccountname: heapsternamespace: kube-system
roleRef:kind: ClusterRolename: system:heapsterapiGroup: rbac.authorization.k8s.io
---apiVersion: apps/v1beta1
kind: Deployment
metadata:name: heapsternamespace: kube-system
spec:replicas: 1selector:matchLabels:k8s-app: heapstertemplate:metadata:labels:task: monitoringk8s-app: heapsterspec:serviceAccountName: heapstercontainers:- name: heapsterimage: k8s.gcr.io/heapster-amd64:v1.5.4imagePullPolicy: IfNotPresentcommand:- /heapster#- --source=kubernetes:https://kubernetes.default- --source=kubernetes.summary_api:''#- --sink=influxdb:http://monitoring-influxdb.kube-system.svc:8086livenessProbe:httpGet:path: /healthzport: 8082scheme: HTTPinitialDelaySeconds: 180timeoutSeconds: 5
---
apiVersion: v1
kind: Service
metadata:labels:task: monitoring# For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)# If you are NOT using this as an addon, you should comment out this line.#kubernetes.io/cluster-service: 'true'kubernetes.io/name: Heapstername: heapsternamespace: kube-system
spec:ports:- port: 80targetPort: 8082selector:k8s-app: heapster
heapster镜像
k8s.gcr.io/heapster-amd64:v1.5.4
镜像下载
链接:https://pan.baidu.com/s/1an-hA1hhsbbIGaLGgPYd-Q 提取码:n0dw
导入heapster镜像
dockerl load -i heapster-1.5.4.tar.gz
创建heapster
[root@master01 ~]# kubectl apply -f heapster.yaml
serviceaccount/heapster created
clusterrolebinding.rbac.authorization.k8s.io/heapster created
deployment.apps/heapster created
service/heapster created[root@master01 ~]# kubectl get pod -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-fb8b8dccf-jfm2m 1/1 Running 5 8d 10.244.0.9 master01 <none> <none>
coredns-fb8b8dccf-r8tqp 1/1 Running 4 8d 10.244.0.10 master01 <none> <none>
etcd-master01 1/1 Running 3 8d 192.168.48.200 master01 <none> <none>
heapster-587f9c9f8b-rfgsc 1/1 Running 0 76s 10.244.2.7 node02 <none> <none>
kube-apiserver-master01 1/1 Running 3 8d 192.168.48.200 master01 <none> <none>
kube-controller-manager-master01 1/1 Running 3 8d 192.168.48.200 master01 <none> <none>
kube-flannel-ds-amd64-26xjf 1/1 Running 4 8d 192.168.48.200 master01 <none> <none>
kube-flannel-ds-amd64-82s7n 1/1 Running 3 8d 192.168.48.201 node01 <none> <none>
kube-flannel-ds-amd64-sd2j9 1/1 Running 3 8d 192.168.48.202 node02 <none> <none>
kube-proxy-792hk 1/1 Running 3 8d 192.168.48.200 master01 <none> <none>
kube-proxy-88cgt 1/1 Running 3 8d 192.168.48.201 node01 <none> <none>
kube-proxy-frgtq 1/1 Running 2 8d 192.168.48.202 node02 <none> <none>
kube-scheduler-master 1/1 Running 3 8d 192.168.48.200 master01 <none> <none>
kubernetes-dashboard-5f7b999d65-9v5f9 1/1 Running 0 84m 10.244.1.6 node01 <none> <none>
metrics-server-c9f69c698-c7zl9 1/1 Running 0 38m 10.244.1.7 node01 <none> <none>
结果发现dashboard并没有生成图形
查看日志
[root@master01 ~]# kubectl logs -n kube-system heapster-587f9c9f8b-rfgsc
I0408 13:00:46.262981 1 heapster.go:78] /heapster --source=kubernetes.summary_api:''
I0408 13:00:46.263011 1 heapster.go:79] Heapster version v1.5.4
I0408 13:00:46.263200 1 configs.go:61] Using Kubernetes client with master "https://10.96.0.1:443" and version v1
I0408 13:00:46.263210 1 configs.go:62] Using kubelet port 10255
I0408 13:00:46.263834 1 heapster.go:202] Starting with Metric Sink
I0408 13:00:46.270800 1 heapster.go:112] Starting heapster on port 8082
E0408 13:01:05.003469 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.200:10255: Get http://192.168.48.200:10255/stats/summary/: dial tcp 192.168.48.200:10255: getsockopt: connection refused
E0408 13:01:05.007752 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.202:10255: Get http://192.168.48.202:10255/stats/summary/: dial tcp 192.168.48.202:10255: getsockopt: connection refused
E0408 13:01:05.022308 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.201:10255: Get http://192.168.48.201:10255/stats/summary/: dial tcp 192.168.48.201:10255: getsockopt: connection refused
W0408 13:01:25.000727 1 manager.go:152] Failed to get all responses in time (got 0/3)
E0408 13:02:05.013965 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.202:10255: Get http://192.168.48.202:10255/stats/summary/: dial tcp 192.168.48.202:10255: getsockopt: connection refused
E0408 13:02:05.016730 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.200:10255: Get http://192.168.48.200:10255/stats/summary/: dial tcp 192.168.48.200:10255: getsockopt: connection refused
E0408 13:02:05.017933 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.201:10255: Get http://192.168.48.201:10255/stats/summary/: dial tcp 192.168.48.201:10255: getsockopt: connection refused
W0408 13:02:25.001764 1 manager.go:152] Failed to get all responses in time (got 0/3)
E0408 13:03:05.008722 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.202:10255: Get http://192.168.48.202:10255/stats/summary/: dial tcp 192.168.48.202:10255: getsockopt: connection refused
E0408 13:03:05.019129 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.201:10255: Get http://192.168.48.201:10255/stats/summary/: dial tcp 192.168.48.201:10255: getsockopt: connection refused
E0408 13:03:05.019318 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.200:10255: Get http://192.168.48.200:10255/stats/summary/: dial tcp 192.168.48.200:10255: getsockopt: connection refused
W0408 13:03:25.001723 1 manager.go:152] Failed to get all responses in time (got 0/3)
E0408 13:04:05.004438 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.200:10255: Get http://192.168.48.200:10255/stats/summary/: dial tcp 192.168.48.200:10255: getsockopt: connection refused
E0408 13:04:05.004837 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.201:10255: Get http://192.168.48.201:10255/stats/summary/: dial tcp 192.168.48.201:10255: getsockopt: connection refused
E0408 13:04:05.017424 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.202:10255: Get http://192.168.48.202:10255/stats/summary/: dial tcp 192.168.48.202:10255: getsockopt: connection refused
W0408 13:04:25.001505 1 manager.go:152] Failed to get all responses in time (got 0/3)
E0408 13:05:05.004518 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.201:10255: Get http://192.168.48.201:10255/stats/summary/: dial tcp 192.168.48.201:10255: getsockopt: connection refused
E0408 13:05:05.006935 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.202:10255: Get http://192.168.48.202:10255/stats/summary/: dial tcp 192.168.48.202:10255: getsockopt: connection refused
E0408 13:05:05.007187 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.200:10255: Get http://192.168.48.200:10255/stats/summary/: dial tcp 192.168.48.200:10255: getsockopt: connection refused
W0408 13:05:25.001816 1 manager.go:152] Failed to get all responses in time (got 0/3)
E0408 13:06:05.009242 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.202:10255: Get http://192.168.48.202:10255/stats/summary/: dial tcp 192.168.48.202:10255: getsockopt: connection refused
E0408 13:06:05.019315 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.201:10255: Get http://192.168.48.201:10255/stats/summary/: dial tcp 192.168.48.201:10255: getsockopt: connection refused
E0408 13:06:05.024390 1 manager.go:101] Error in scraping containers from kubelet_summary:192.168.48.200:10255: Get http://192.168.48.200:10255/stats/summary/: dial tcp 192.168.48.200:10255: getsockopt: connection refused
原因10255端口没开,所有节点都要开启10255端口,添加readOnlyPort: 10255
vim /var/lib/kubelet/config.yaml
.....
port: 10250
readOnlyPort: 10255
registryBurst: 10
registryPullQPS: 5
resolvConf: /etc/resolv.conf
重启kubelet
[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl restart kubelet.service
[root@master01 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:45028 0.0.0.0:* LISTEN 58103/kubelet
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 58103/kubelet
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 43472/kube-proxy
tcp 0 0 192.168.48.200:2379 0.0.0.0:* LISTEN 43426/etcd
tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN 43426/etcd
tcp 0 0 192.168.48.200:2380 0.0.0.0:* LISTEN 43426/etcd
tcp 0 0 127.0.0.1:10257 0.0.0.0:* LISTEN 43368/kube-controll
tcp 0 0 127.0.0.1:10259 0.0.0.0:* LISTEN 43343/kube-schedule
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 951/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1034/master
tcp6 0 0 :::30080 :::* LISTEN 43472/kube-proxy
tcp6 0 0 :::10250 :::* LISTEN 58103/kubelet
tcp6 0 0 :::10251 :::* LISTEN 43343/kube-schedule
tcp6 0 0 :::6443 :::* LISTEN 43325/kube-apiserve
tcp6 0 0 :::10252 :::* LISTEN 43368/kube-controll
tcp6 0 0 :::10255 :::* LISTEN 58103/kubelet
tcp6 0 0 :::10256 :::* LISTEN 43472/kube-proxy
tcp6 0 0 :::30001 :::* LISTEN 43472/kube-proxy
tcp6 0 0 :::22 :::* LISTEN 951/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1034/master
[root@master ~]#
重启heapster
[root@master ~]# kubectl delete -f heapster.yaml
serviceaccount "heapster" deleted
clusterrolebinding.rbac.authorization.k8s.io "heapster" deleted
deployment.apps "heapster" deleted
service "heapster" deleted[root@master ~]# kubectl apply -f heapster.yaml
serviceaccount/heapster created
clusterrolebinding.rbac.authorization.k8s.io/heapster created
deployment.apps/heapster created
service/heapster created
验收
经过一段时间收集,图形界面已出
一起来学k8s 07.安装metrics-server和heapster相关推荐
- k8s搭建监控:安装metrics server和dashboard
安装metrics server 参考:https://github.com/kubernetes-sigs/metrics-server kubectl create -f components. ...
- Kubernetes — 安装 Metrics Server
目录 文章目录 目录 Kubernetes Metrics Server 启用 API Aggregator 安装 Metrics Server Kubernetes Metrics Server K ...
- 安装 Metrics server
安装 Metrics server Metrics Server 是 Kubernetes 内置自动缩放管道的可扩展.高效的容器资源指标来源. Metrics Server 从 Kubelets 收集 ...
- 【K8S 七】Metrics Server部署中的问题
目录 填坑过程 问题一:启动metrics server报证书错误:x509: cannot validate certificate for x.x.x.x because it doesn't c ...
- 一起来学k8s 06.安装dashboard
Dashboard Install Kubernetes Dashboard就是k8s集群的web界面,集合了所有命令行可以操作的所有命令.界面如下所示 环境 192.168.48.101 maste ...
- Easypack: Ansible方式部署工具中增加Metrics Server支持
在Easypack中提供了多套Kubernetes快速部署的工具,基于Bash脚本和Ansible的,Ansible的方式也有基于K3S和普通的Kubernetes的两种.这篇文章介绍一下普通Kube ...
- Metrics Server安装以及报错解决
在查看kubernetes的测试环境中,使用top命令查看Pod的CPU.内存使用过程中,遇到以下问题: $ kubectl top po W0818 03:22:46.090578 26207 to ...
- k8s 1.14部署metrics server显示running但是报ServiceUnavailable错误
k8s 1.14部署metrics server显示running但是报ServiceUnavailable错误 查看metrics server日志: [root@master metrics-se ...
- Kubernetes基于Metrics Server的HPA
Kubernetes基于Metrics Server的HPA [TOC] 1. 环境说明和相关介绍 我的kubernetes环境: kubeadm安装的kubernetes1.11 Horizonta ...
最新文章
- python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。...
- 《智能家居产品 从设计到运营》——第2章 技术搭台——与智能家居相关的技术...
- 网络2011年:网络安全
- 每日一算法 ---- 打印九九乘法表
- listdir在python3_Python3 os.listdir() 方法
- 【声传播】——角谱理论、模式理论及三维傅里叶变换
- 一辆特斯拉Model S在比利时充电时起火 充电桩也被烧焦
- linux服务器centos空间满的检查及解决方法
- Android 开发工程师自述:毕业两年后,我明白的那些事!
- 苹果电脑推出MacOSMojave10.14.5支持隔空投放2
- Android webview监听网页对话框点击事件
- SpringMVC工作原理图
- Android 系统(44)---多语言
- AI 金融行业案例清单
- 大一c语言挂科分数烟台大学,知乎烟大 | 在烟大挂科是一种什么体验
- 现货K线图知识之五:北坡炮兵并排跑
- 赛灵思 Xilinx Versal 自适应计算加速平台嵌入式设计教程
- 常见的图片比例有哪些?App中不同图片比例适用场景
- matlab 坐标轴刻度朝外_Matlab 绘图 坐标轴 刻度
- 昔日移动GPU王者,从数据中心、汽车等市场全面杀回来——专访Imagination技术创新副总裁Kristof Beets...
热门文章
- windows 粘贴功能不可用
- resnet50网络结构_识别准确率从76.5%到82.4%的ResNet50系列图像分类模型养成之路
- 阿里云付哲:边缘云技术创新 让“云”无处不在
- 华洛希立式三角钢琴/HAROCHE给大家一些关于小朋友学琴的建议
- Hadoop——shell脚本
- 系统平台电商精选化运营与如何选品
- 【小方重新学Java】初识Java
- 两年前端蚂蚁字节滴滴面试经历总结
- 一屋不扫,何以扫天下=====记JAVA基础之解惑篇
- Mac电脑看图快捷键