Правильно, что go-client не поддерживает тип метрики, но в пакете метрик есть предварительно сгенерированный клиент , который можно использовать для извлечения объектов метрик и назначения их сразу соответствующемусостав.Сначала вам нужно сгенерировать конфигурацию и передать ее клиенту метрик.Таким образом, простой клиент для метрик будет выглядеть так:
package main
import (
"k8s.io/client-go/tools/clientcmd"
metrics "k8s.io/metrics/pkg/client/clientset/versioned"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func main() {
var kubeconfig, master string //empty, assuming inClusterConfig
config, err := clientcmd.BuildConfigFromFlags(master, kubeconfig)
if err != nil{
panic(err)
}
mc, err := metrics.NewForConfig(config)
if err != nil {
panic(err)
}
mc.MetricsV1beta1().NodeMetricses().Get("your node name", metav1.GetOptions{})
mc.MetricsV1beta1().NodeMetricses().List(metav1.ListOptions{})
mc.MetricsV1beta1().PodMetricses(metav1.NamespaceAll).List(metav1.ListOptions{})
mc.MetricsV1beta1().PodMetricses(metav1.NamespaceAll).Get("your pod name", metav1.GetOptions{})
}
Каждый из перечисленных выше методов из клиента метрики возвращает соответствующую структуру (вы можете проверить эти здесь ) и ошибку (еслилюбой) который вы должны обработать в соответствии с вашими требованиями.