Metrics Server安装以及报错解决

解决Kubernetes测试环境中的Metrics API问题:安装与配置Metric-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-f54
### 解决方案 当遇到 `metrics-server` 的 readiness 探针返回 HTTP 500 错误时,这通常意味着服务内部存在某种配置错误或资源不可用的情况[^1]。 #### 配置调整建议 为了修复此问题,可以尝试修改 `metrics-server` 的部署文件中的参数设置。具体来说,在容器启动参数中加入一些额外选项来增强兼容性和稳定性: ```yaml template: metadata: labels: k8s-app: metrics-server spec: containers: - args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - --kubelet-use-node-status-port - --metric-resolution=15s - --kubelet-insecure-tls # 添加这一项允许不安全TLS连接 image: registry.k8s.io/metrics-server/metrics-server:v0.6.3 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 ``` 上述 YAML 片段通过指定 `--kubelet-insecure-tls` 参数使得 `metrics-server` 可以接受来自 kubelet 不带有效证书的 HTTPS 请求,从而绕过可能存在的 TLS 认证问题[^4]。 另外,确保所使用的镜像版本是最新的稳定版也很重要,因为旧版本可能存在已知缺陷。 #### 常见原因分析 HTTP 500 和 503 状态码表明服务器端遇到了无法处理请求的问题[^2]。对于 `metrics-server` 来说,常见的触发因素包括但不限于: - Kubelet API 调用失败 - SSL/TLS 握手异常 - 内存不足或其他系统资源耗尽情况 因此除了调整配置外,还应检查集群节点的状态以及日志记录,确认是否有其他潜在问题影响到 `metrics-server` 正常运行。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值