gpt4 book ai didi

go - 使用 Go 客户端获取 Kubernetes 中 pod 的当前资源使用情况

转载 作者:IT王子 更新时间:2023-10-29 00:36:30 29 4
gpt4 key购买 nike

kubernetes go 客户端有很多方法,我找不到如何获取特定(或所有 pod)的当前 CPU 和 RAM 使用情况。

谁能告诉我需要调用哪些方法来获取 pod 和节点的当前使用情况?

我的节点列表:

nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})

Kubernetes Go 客户端:https://github.com/kubernetes/client-go

指标包:https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/metrics

据我所知,指标服务器实现了 Kubernetes 指标包,以便从 pod 和节点获取资源使用情况,但我无法弄清楚它们在哪里以及如何做到这一点:https://github.com/kubernetes-incubator/metrics-server

最佳答案

go-client 不支持度量类型是正确的,但是在度量包中有一个预生成的 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{})
}

度量客户端的上述每个方法都会返回一个适当的结构(您可以检查那些 here )和一个错误(如果有),您应该根据您的要求进行处理。

关于go - 使用 Go 客户端获取 Kubernetes 中 pod 的当前资源使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52763291/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com