我正在尝试使用 API 获取分配给 pod 的实际和总内存量。虽然我能够使用指标服务器 api 获取实际内存消耗。如何使用指标服务器 API 获取分配给 pod 的总内存?
我正在开发一个仪表板,我需要在其中展示 pod 内存和 cpu。ui 图已输入实际和总数量。我可以获取命令 kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/ 使用的实际内存,但是如何获取 pod 的总内存?
我正在尝试使用 API 获取分配给 pod 的实际和总内存量。虽然我能够使用指标服务器 api 获取实际内存消耗。如何使用指标服务器 API 获取分配给 pod 的总内存?
我正在开发一个仪表板,我需要在其中展示 pod 内存和 cpu。ui 图已输入实际和总数量。我可以获取命令 kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/ 使用的实际内存,但是如何获取 pod 的总内存?
Kubernetes API 指南中描述了所有可用的 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-and-a-memory-limit
要为容器指定内存请求,请在容器的资源清单中包含 resources:requests 字段。要指定内存限制,请包括 resources:limits。
如果不指定内存限制,则容器没有上限。https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/#if-you-do-not-specify-a-memory-limit
如果您不为 Container 指定内存限制,则适用以下情况之一:
• 容器对其使用的内存量没有上限。容器可以使用它正在运行的节点上的所有可用内存,这反过来又可以调用 OOM Killer。此外,在 OOM Kill 的情况下,没有资源限制的容器将有更大的机会被杀死。
• Container 在具有默认内存限制的命名空间中运行,并且自动为Container 分配默认限制。集群管理员可以使用 LimitRange 来指定内存限制的默认值。