Dask Kubernetes Operator启动失败:无法访问external.metrics.k8s.io/v1beta1 API
Dask Kubernetes Operator启动失败求助
报错信息
[2022-12-04 12:17:28,456] kopf._core.reactor.o [ERROR ] Request attempt #9/9 failed; escalating: GET https://10.64.0.1:443/apis/external.metrics.k8s.io/v1beta1 -> APIServerError(None, None)
执行命令及结果
- 查询custom metrics API:
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1
返回:
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"custom.metrics.k8s.io/v1beta1","resources":[]}
- 查询external metrics API:
kubectl get --raw /apis/external.metrics.k8s.io/v1beta1
返回:
Error from server (ServiceUnavailable): the server is currently unable to handle the request
排查及解决步骤
检查外部metrics组件运行状态
确认集群中提供external metrics的组件(如prometheus-adapter、custom-metrics-apiserver等)是否正常运行:# 替换为组件所在的实际命名空间,如monitoring或kube-system kubectl get pods -n <namespace> | grep metrics-adapter若pod异常,查看日志定位问题:
kubectl logs <adapter-pod-name> -n <namespace>验证APIService注册状态
检查external.metrics.k8s.io的APIService可用性:kubectl get apiservices v1beta1.external.metrics.k8s.io若状态不为
Available=True,查看详细事件:kubectl describe apiservices v1beta1.external.metrics.k8s.io常见问题包括端点不可达、证书错误或权限不足。
确认服务与Endpoint关联
检查external metrics adapter对应的Service及后端Endpoint:# 替换为实际服务名和命名空间 kubectl get svc <metrics-adapter-service> -n <namespace> kubectl get endpoints <metrics-adapter-service> -n <namespace>确保Service的标签选择器与adapter pod标签匹配,且Endpoint列表包含正常的pod IP。
检查组件配置正确性
若使用prometheus-adapter,确认配置文件中正确定义了metrics暴露规则,且能正常连接到Prometheus:kubectl get configmap <adapter-configmap> -n <namespace> -o yaml配置错误会导致adapter无法正常提供metrics数据,进而引发APIService不可用。
内容的提问来源于stack exchange,提问作者Michael Doron
相关产品推荐
相关产品推荐

