你可以使用Kubernetes API和golang来获取集群的指标,比如内存使用情况。

huangapple go评论105阅读模式
英文:

How can I use Kubernetes API to get the metrics of a cluster like memory in golang?

问题

我正在尝试在Go程序中获取集群利用率的值(CPU利用率、内存、文件系统、网络传输、Pod数量)。我们是否有API可以直接从Kubernetes或OpenShift获取集群数据,并可以从Go程序中调用?或者我们可以获取单个节点的数据并将其相加以获取总的集群利用率值?

在程序中使用os/exec执行kubectl命令无法获取这些值。

英文:

I am trying to get the cluster utilization values (CPU Utilization, Memory, File System, Network transfer, pod count) in a go program. Do we have api's to get the cluster data directly from k8s or openshift which can be called from a go program ? Or can we get the individual node data and add it up to get the total cluster utilization values ?

Executing kubectl commands using os/exec in the program is not able to fetch the values.

答案1

得分: 2

Kubernetes 度量服务器通过Summary API提供所有这些信息。

使用命令行调用此API非常简单。

kubectl get --raw "/api/v1/nodes/${NODE_NAME}/proxy/stats/summary"

如果您使用client-go,则可以使用以下代码调用此API:

request := clientset.CoreV1().RESTClient().Get().Resource("nodes").Name(node.Name).SubResource("proxy").Suffix("stats/summary")
responseRawArrayOfBytes, err := request.DoRaw(context.Background())
if err != nil {
	return nil, errors.Wrap(err, "failed to get stats from node")
}

请注意,根据官方度量服务器文档,端点将在metrics-server 0.6.x中更改/metrics/resource

英文:

The Kubernetes metrics server offers all of this information via the Summary API.

Invoking this API is straight-forward using the command line.

kubectl get --raw "/api/v1/nodes/${NODE_NAME}/proxy/stats/summary"

And from go, if you are using client-go, this API can be invoked with:

request := clientset.CoreV1().RESTClient().Get().Resource("nodes").Name(node.Name).SubResource("proxy").Suffix("stats/summary")
responseRawArrayOfBytes, err := request.DoRaw(context.Background())
if err != nil {
	return nil, errors.Wrap(err, "failed to get stats from node")
}

Note that, according to the official metrics server documentation, the endpoint will be changing to /metrics/resource in metrics-server 0.6.x.

huangapple
  • 本文由 发表于 2022年11月27日 22:29:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/74590850.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定