Kubernates使用度量限制pod内存



我正在尝试使用API获取分配给pod的实际内存量和总内存量。而我能够使用metrics服务器api获取实际的内存消耗。如何使用度量服务器API获取分配给pod的总内存?

我正在开发一个仪表板,我需要在其中展示pod内存和cpu。ui图有实际和总金额的输入。我可以获取命令kubectl get--raw/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/使用的实际内存,但我如何获取pod的总内存?

所有可用的API都在Kubernetes API指南中介绍。它可用于不同的K8s版本(只需注意URL(。

Nick,如何使用API获取此值?

乍一看,即使是/api/v1/namespaces/<namespace>/pods/也能胜任这项工作。

请看我的例子(我已决定自己练习(。

$ cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
name: server-go-lim 
...
spec:
containers:
- image: nkolchenko/enea:server_go_latest
resources:
...
limits:
memory: 1024Mi   # Here is the Limit
...
$ kubectl create -f pod.yaml
pod/server-go-lim created

$ kubectl get --raw /api/v1/namespaces/default/pods/server-go-lim | json_pp 
{
...
"spec" : {
"containers" : [
{
"resources" :  
"limits" : {
"memory" : "1Gi"
}

正如我们所看到的,API为pod返回Limits。如果你一直在找那个,请告诉我。

您只需运行kubectl describe pod <pod>并查看.Containers.<container>.Limits

分配给pod的内存总量受分配给pod容器的内存限制的限制。https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/#specify-a-memory-request和a-memory-limit

要为容器指定内存请求,请在容器的资源清单中包含resources:requests字段。要指定内存限制,请包括resources:limits。

如果不指定内存限制,则容器没有上限。https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/#if-您没有指定的内存限制

如果您没有为容器指定内存限制,则会出现以下情况之一:

•容器对其使用的内存量没有上限。容器可以使用它正在运行的节点上的所有可用内存,这反过来又可以调用OOM Killer。此外,在OOM Kill的情况下,没有资源限制的容器将有更大的机会被杀死。

•Container在具有默认内存限制的命名空间中运行,Container会自动分配默认限制。群集管理员可以使用LimitRange指定内存限制的默认值。

最新更新