E1129 05:31:43.133057    1691 memcache.go:287] couldn't get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E1129 05:31:43.143879    1691 memcache.go:121] couldn't get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E1129 05:31:43.145402    1691 memcache.go:121] couldn't get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E1129 05:31:43.147799    1691 memcache.go:121] couldn't get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request
NAME                            

metrics-server error
metrics-server error

为什么会报这个? metrics-server有什么作用?

为什么会报错?

报错的原因是 Kubernetes 集群中的 metrics.k8s.io/v1beta1 API 服务未能正确响应请求。这通常是因为 Metrics Server 没有正确配置、运行或连接不上集群中的 Kubelet。

详细错误解析

•	metrics.k8s.io/v1beta1 API 提供集群资源的实时监控数据,比如 Pod 和节点的 CPU、内存使用情况。
•	错误日志表明:
•	Kubernetes 调用 metrics.k8s.io 的 API 时,Metrics Server 没有返回数据。
•	原因可能是:
1.	Metrics Server未运行或未就绪:Pod 状态异常。
2.	网络问题:Metrics Server 无法访问节点上的 Kubelet。
3.	认证或权限问题:Kubelet未能通过 Metrics Server 的认证。
4.	APIService 未注册或无端点:v1beta1.metrics.k8s.io 的 API 无法找到 Metrics Server 的服务端点。

Metrics Server 的作用

Metrics Server 是 Kubernetes 中的一个核心组件,用于实时采集集群的资源使用数据。它的主要功能包括:

  1. 提供资源监控数据

    • kubectl top 命令:
    • 通过 Metrics Server,您可以运行以下命令获取集群资源使用情况:

kubectl top nodes
kubectl top pods


  1. 支持自动扩缩容

    • Kubernetes 的 Horizontal Pod Autoscaler (HPA) 和 Vertical Pod Autoscaler (VPA) 依赖 Metrics Server 提供的资源使用指标(如 CPU、内存)来调整 Pod 副本数或资源分配。

  2. 集成其他监控系统

    • Metrics Server 提供的实时数据可以与监控工具(如 Prometheus)结合使用,用于进一步分析集群性能。

解决方案

  1. 确保 Metrics Server 已部署

检查 Metrics Server 是否运行:

kubectl get pods -n kube-system | grep metrics-server

如果没有运行,安装 Metrics Server:

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

  1. 检查 Metrics Server 的状态

查看 Metrics Server 的日志,定位问题:

kubectl logs -n kube-system <metrics-server-pod-name>

常见问题:
• TLS 证书错误:可能需要配置 –kubelet-insecure-tls。
• 网络问题:Metrics Server 无法访问 Kubelet。

  1. 修复 Metrics Server 配置

编辑 Metrics Server Deployment:

kubectl edit deployment metrics-server -n kube-system

添加以下参数:

containers:
- name: metrics-server
  args:
  - --kubelet-insecure-tls
  - --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP
  1. 检查 APIService

验证 metrics.k8s.io 是否正确注册:

kubectl get apiservices | grep metrics

如果 AVAILABLE 显示 False,描述该服务:

kubectl describe apiservice v1beta1.metrics.k8s.io

查看是否存在以下问题:
• 连接被拒绝 (connection refused)。
• 缺少端点 (MissingEndpoints)。

  1. 测试

修复后,运行以下命令验证:

kubectl top nodes
kubectl top pods

Loading

By Yang

Share via
Copy link