in pkg/probe/gke.go [76:113]
func (p *metricsServerProbe) Run(ctx context.Context, clientset *kubernetes.Clientset) Result {
var podmetrics PodMetricsList
var body []byte
var err error
body, err = clientset.RESTClient().Get().AbsPath(clusterMetricsApi).DoRaw(ctx)
if err != nil {
klog.Warningf("Get metrics from metrics-server returned error %s\n", err.Error())
return Result{
Available: "Unhealthy",
Err: err,
}
}
if err = json.Unmarshal(body, &podmetrics); err != nil {
klog.Warningf("Json parser metrics returned error %s\n", err.Error())
return Result{
Available: "Unhealthy",
Err: err,
}
}
if len(podmetrics.Items) == 0 {
err = fmt.Errorf("zero metrics returned\n")
klog.Warningf("Get metrics from metrics-server returned error %s\n", err.Error())
return Result{
Available: "Unhealthy",
Err: err,
}
}
str, _ := json.MarshalIndent(podmetrics, "", "\t")
klog.V(2).Infof("Pod metrics List is %s\n", string(str))
err = fmt.Errorf("Metrics-server is operational health")
return Result{
Available: "Healthy",
Err: err,
}
}