概述

metrics-server 是一个集群范围内的资源数据集和工具,同样的,metrics-server 也只是显示数据,并不提供数据存储服务,主要关注的是资源度量 API 的实现,比如 CPU、文件描述符、内存、请求延时等指标,metric-server 收集数据给 k8s 集群内使用,如 kubectl,hpa,scheduler 等

安装metrics-server可能会遇到很多坑,下面步骤教你一步步走出深坑

一、安装metrics-server

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

二、通过Deployment工作负载安装,查看安装状态

 1、这里很清楚看到metrics并没有reday,继续通过查看pod信息确定是哪里问题

kubectl get deploy -A

2、出现ErrImagePull 基本判定是镜像问题,进入到pod继续查看信息

kubectl get pods -n kube-system | grep metrics

3、通过describe event可以确定是镜像拉取失败

kubectl describe pod/metrics-server-847dcc659d-gvv7z -n kube-system

Back-off pulling image "k8s.gcr.io/metrics-server/metrics-server:v0.6.1" Failed to pull image "k8s.gcr.io/metrics-server/metrics-server:v0.6.1": rpc error: code = Unknown desc = Error response from daemon: Get "https://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

 三、手动下载docker镜像源

1、登录dockerhub搜索metrics-server:v0.6.1

Docker Hubhttps://hub.docker.com/

 2、到服务器docker pull

docker pull cnbugs/metrics-server

四、更改服务器deployment

1、通过edit deployment找到image位置改成上面下载的镜像

kubectl edit deployment metrics-server -n kube-system

 2、再次查看metrics-server状态,发现还是有问题

虽然是running,但是存活数为0

 3、再次通过describe event查看问题

 Readiness probe failed: HTTP probe failed with statuscode: 500

可见是权限验证(证书)出了问题

 4、通过edit编辑

kubectl edit deployment metrics-server -n kube-system

添加- --kubelet-insecure-tls 

kubelet 的 10250 端口使用的是 https 协议,连接需要验证 tls 证书。--kubelet-insecure-tls 不验证客户端证书。

 5、再次查看deployment中的metrics-server和pod都已经正常

五、测试 

使用kubectl top pod -A查看组件状态        

点击阅读全文
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐