Metrics Server安装以及报错解决
在查看kubernetes的测试环境中,使用top命令查看Pod的CPU、内存使用过程中,遇到以下问题:
$ kubectl top po
W0818 03:22:46.090578 26207 top_pod.go:140] Using json format to get metrics.e-protocol-buffers flag
error: Metrics API not available
如上看到ERROR信息“Metrics API not available”,这是由于该Kuernetes环境没有安装metric-server组件导致的。
安装metric-server组件可以参考Github上的安装参考资料:https://github.com/kubernetes-sigs/metrics-server,如下所示:
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
在正常可以科学上网的情况下,可以拉取到镜像“k8s.gcr.io/metrics-server/metrics-server:v0.5.0”,即可安装完成。
若是不具备科学上网的条件,可以参考《史上最全操作教程——利用阿里云FREE镜像仓库构建国外DOCKER镜像》这篇文章操作。
上述apply之后,查看该metric-server运行Pod,
$ kubectl get pods --all-namespaces | grep metrics
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-6dfddc5fb8-f54vr 0/1 Running 0 44s
该metric-server Pod尚未准备运行完成,describe查看其详细信息:
……
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 79s default-scheduler Successfully assigned kube-system/metrics-server-6dfddc5fb8-f54vr to lokiNormal Pulled 78s kubelet Container image "k8s.gcr.io/metrics-server/metrics-server:v0.5.0" already present on machineNormal Created 78s kubelet Created container metrics-serverNormal Started 78s kubelet Started container metrics-serverWarning Unhealthy 9s (x5 over 49s) kubelet Readiness probe failed: HTTP probe failed with statuscode: 500
可以看到在描述中的事件信息中,“Readiness probe failed: HTTP probe failed with statuscode: 500”。
然后查看该Pod的日志:
$ kubectl logs -n kube-system metrics-server-6dfddc5fb8-f54vr
……
I0816 01:07:06.734107 1 server.go:188] "Failed probe" probe="metric-storage-ready" err="not metrics to serve"
I0816 01:07:16.736864 1 server.go:188] "Failed probe" probe="metric-storage-ready" err="not metrics to serve"
E0816 01:07:18.834625 1 scraper.go:139] "Failed to scrape node" err="Get \"https://192.168.130.100:10250/stats/summary?only_cpu_and_memory=true\": x509: cannot validate certificate for 192.168.130.100 because it doesn't contain any IP SANs" node="loki"
如上可以看到Readiness Probe探针检测到Metris Server容器启动后对httpGet探针存活没反应,具体原因是“cannot validate certificate for 192.168.130.100 because it doesn't contain any IP SANs”。
查看Metris Server的deployment文件的Readiness Probe探针描述:
……
readinessProbe:failureThreshold: 3httpGet:path: /readyzport: httpsscheme: HTTPSinitialDelaySeconds: 20
periodSeconds: 10
……
如上可知,该Readiness Probe探针判断容器是否可用(Ready状态),通过配置HTTPGetAction方式,kubelet定时发送HTTP请求到https://readyz来进行容器是否Ready的检查。
- “InitialDealySeconds:20”:启动容器后进行首次检查的等待时间为20s;
- “periodSeconds:10”:间隔10s进行一次探测。
针对“cannot validate certificate for 192.168.130.100 because it doesn't contain any IP SANs”这个报错,可以仔细查阅Github上的安装参考资料:https://github.com/kubernetes-sigs/metrics-server。其中有提到:
1)安装要求,如下红框中说明,Kubelet证书需要由群集证书颁发机构签名(或可以禁用证书验证,通过对Metrics Server配置参数--Kubelet-insecure-tls不安全)
2)配置,如下红框中说明,添加了“--Kubelet-insecure-tls”这个配置,就不会去验证Kubelets提供的服务证书的CA。但是仅用于测试。
本次Kubernetes环境仅作为本机测试使用,可以修改之前的apply的components.yaml文件,添加“--Kubelet-insecure-tls”参数,如下所示(具体内容跟前后都已经省略):
……
template:metadata:labels:k8s-app: metrics-serverspec:containers:- args:- --cert-dir=/tmp- --secure-port=443- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname- --kubelet-use-node-status-port- --metric-resolution=15s- --kubelet-insecure-tlsimage: k8s.gcr.io/metrics-server/metrics-server:v0.5.0imagePullPolicy: IfNotPresent
……
然后重新apply该components.yaml文件,以及查看Pod,详细信息:
$ kubectl apply -f components.yaml
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created$ kubectl get pods --all-namespaces | grep metrics
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-6dfddc5fb8-f54vr 1/1 Running 0 44s$ kubectl describe pod/metrics-server-5cd859f5c-nr7h5 -n kube-system
……
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 41s default-scheduler Successfully assigned kube-system/metrics-server-5cd859f5c-nr7h5 to lokiNormal Pulled 40s kubelet Container image "k8s.gcr.io/metrics-server/metrics-server:v0.5.0" already present on machineNormal Created 40s kubelet Created container metrics-serverNormal Started 40s kubelet Started container metrics-server
如上查看到的信息都正常。
验证top命名:
$ kubectl top po
W0815 21:13:43.801129 47845 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME CPU(cores) MEMORY(bytes)
cpu-loader-5c8d96447-49rzf 0m 5Mi
cpu-loader-5c8d96447-4ptbt 0m 3Mi
cpu-loader-5c8d96447-f4nsc 0m 3Mi
验证完无误。
Metrics Server安装以及报错解决相关推荐
- 遇到Redis server went away报错解决
遇到Redis server went away报错解决 这个问题网上有很多思路,现在记录一下我碰到的 **环境:Windows(TP5)+Centos 7服务器(redis)**首先,在config ...
- mac上安装webpack报错解决方法Hit error EACCES: permission denied, mkdir ‘/usr/local/lib/node_modules/webpack
mac上安装webpack报错解决方法Hit error EACCES: permission denied, mkdir '/usr/local/lib/node_modules/webpack 参 ...
- Jenkins安装插件报错解决方法
Jenkins安装插件报错解决方法 1.报错场景 2.场景分析 3.问题解决(不一定能全解决,看运气) 1.报错场景 按正常方式安装完Jenkins后安装插件会报错如下: // An highligh ...
- npm 安装依赖报错解决方法总结
npm 安装依赖报错解决方法总结 参考文章: (1)npm 安装依赖报错解决方法总结 (2)https://www.cnblogs.com/ysxq/p/11658571.html (3)https: ...
- 深度学习部署:Windows安装pycocotools报错解决方法
深度学习部署:Windows安装pycocotools报错解决方法 1.pycocotools库的简介 2.pycocotools安装的坑 3.解决办法 更多Ai资讯:公主号AiCharm 本系列是作 ...
- pycharm安装pandas报错解决办法
pycharm安装pandas报错解决办法 当使用pycharm自动安装pandas时,提示安装失败并要求在命令提示符界面进行安装.在使用命令提示符安装成功之后,发现pycharm仍然无法安装pand ...
- 安装onnxruntime报错解决
安装onnxruntime报错解决 对于onnxruntime出现以下错误 ERROR: Could not find a version that satisfies the requirement ...
- 解决虚拟机安装系统报错解决方法
解决虚拟机安装系统报错解决方法 虚拟机安装系统报错提示: 错误原因:当你打开虚拟机安装系统时,它需要调用CPU虚拟化功能,因为他要把所有底层硬件虚拟给(VMwere 虚拟机),所以要开启虚拟化功能.虚 ...
- Redis server went away报错解决
redis:Redis server went away报错解决 1.查看redis.conf 绑定ip是否为0.0.0.0默认是127.0.0.1 如果127.0.0.1 redis-cli 连接时 ...
最新文章
- 教你如何在 AlertManager 报警通知中展示监控图表
- 独家 | 为什么在CV(视觉识别)领域,Transformers正在缓慢逐步替代CNN?
- Laravel 5.5 的错误异常处理机制以及应用实例
- java常用注解及功能_SpringBoot 中常用注解及各种注解作用
- JDBC:java.sql.SQLException: Before start of result set怎么办
- php++mpdf.mpdf,使用php第三方包mpdf将网页装换成pdf文件【2】
- win10设置默认输入法_为什么说win10越来越好用了?(技巧篇)
- Android在使用WebView时,通过Javascript调用JAVA函数
- 搭建分布式hadoop2.x集群
- php mysql 排序规则_使用PHP的MySQL最好的排序规则是什么?
- C++ Socket 编程
- php获取多选框的值
- 第六讲 复数和复指数
- 【信息系统项目管理师】第十七章 项目管理高级知识
- Stable Diffusion采样速度翻倍!仅需10到25步的扩散模型采样算法
- 可视化利器Tensorboard
- 分享:用Python语言轻松实现二代身份证阅读器(读卡器)自动读卡,支持定制开发
- 2022年云南最新建筑八大员(市政)模拟考试题库及答案
- 一个半径为R的球沉入水中,球面顶部正好与水面相切,球的密度为1,求将球从水中取出所做的功
- 半导体设备基本通信标准介绍系列之-开篇
热门文章
- 【Quartz】定时任务
- 互联网药库试水:北京今年展开互联网虚拟药库
- 【新书推荐】【2018.03】基于超材料表面等离子体的传输线与天线设计
- 水箱自洁式消毒器定时器调整步骤
- 吐血整理:常用的大数据采集工具,你不可不知
- AutoCAD Architecture 2021中文版
- 国行new moto x升级android6,摩托罗拉Android6.0升级计划:全都在
- Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库
- Visual SLAM:What are the Current Trends and What to Expect?
- LibUsbDotNet使用方法