Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 容器\内存\使用情况\按部署名称列出的字节_Kubernetes_Prometheus_Metrics - Fatal编程技术网

Kubernetes 容器\内存\使用情况\按部署名称列出的字节

Kubernetes 容器\内存\使用情况\按部署名称列出的字节,kubernetes,prometheus,metrics,Kubernetes,Prometheus,Metrics,给定一个kubernetes群集,该群集具有: 我喜欢使用metriccontainer\u memory\u usage\u bytes,但选择bydeployment\u name而不是pod 如果deployment\u name=foo没有使用deployment\u name=foo-bar的部署,那么像container\u memory\u usage\u bytes{pod\u name=~“foo-.+”}这样的选择器非常好 我希望通过度量kube\u pod\u容器\u

给定一个kubernetes群集,该群集具有:

  • 我喜欢使用metric
    container\u memory\u usage\u bytes
    ,但选择by
    deployment\u name
    而不是
    pod

    如果
    deployment\u name=foo
    没有使用
    deployment\u name=foo-bar
    的部署,那么像
    container\u memory\u usage\u bytes{pod\u name=~“foo-.+”}
    这样的选择器非常好

    我希望通过度量
    kube\u pod\u容器\u资源\u限制\u内存\u字节
    实现同样的效果

    有没有办法做到这一点;DR

    没有通过
    部署名称直接查询普罗米修斯的方法

    您可以使用部署的标签查询特定部署的内存使用情况

    使用的查询:

    sum(
      kube_pod_labels{label_app=~"ubuntu.*"} * on (pod) group_right(label_app) container_memory_usage_bytes{namespace="memory-testing", container=""}
      ) 
      by (label_app)
    
    有一篇很棒的文章解释了这个查询背后的概念。我鼓励您阅读:

    我已经包括了一个解释和下面的例子


    问题中提到的选择者:
    container\u memory\u usage\u bytes{pod\u name=~“foo-.+”}

    +
    -匹配任何字符串,但不能匹配空字符串

    有这样的豆荚:

    • foo-12345678-abcde
      -将匹配(部署
      foo
    • foo-deployment-98765432-zyxzy
      -将匹配(deployment
      foo-deployment
    如上所示,它将匹配两个吊舱和两个部署

    更多参考:


    如前所述,您可以使用部署中的标签来确定特定部署使用的资源

    假设:

    • 内存测试
      命名空间中有2个部署:
      • ubuntu
        有3个副本
      • ubuntu附加版
        ,带有3个副本
    • 以上部署的标签与其名称相同(可以不同):
      • app:ubuntu
      • app:ubuntu附加版
    • Kubernetes群集版本
      1.18.X
    为什么我要指定Kubernetes版本

    Kubernetes 1.16将从cAdvisor metrics中删除重复的
    pod_name
    container_name
    度量标签。对于1.14和1.15版本,所有
    pod
    pod\u name
    container
    container\u name
    都作为宽限期提供

    这意味着您需要替换如下参数:

    • pod
      带有
      pod\u名称
    • 容器
      带有
      容器名称
    要部署Prometheus和其他工具来监视我使用的集群,请执行以下操作:

    ubuntu
    部署中的pod配置为生成人工负载(
    stress ng
    )。这样做是为了说明如何避免使用的资源翻倍的情况

    内存测试
    命名空间中POD使用的资源:

    container_memory_usage_bytes{endpoint="https-metrics",id="/kubepods/besteffort/podb96dea39-b388-471e-a789-8c74b1670c74",instance="192.168.0.117:10250",job="kubelet",metrics_path="/metrics/cadvisor",namespace="memory-testing",node="node1",pod="ubuntu-5b5d6c56f6-cfr9g",service="kubelet"} 308559872
    container_memory_usage_bytes{container="POD",endpoint="https-metrics",id="/kubepods/besteffort/podb96dea39-b388-471e-a789-8c74b1670c74/312980f90e6104d021c12c376e83fe2bfc524faa4d4cee6553182d0fa2e007a1",image="k8s.gcr.io/pause:3.2",instance="192.168.0.117:10250",job="kubelet",metrics_path="/metrics/cadvisor",name="k8s_POD_ubuntu-5b5d6c56f6-cfr9g_memory-testing_b96dea39-b388-471e-a789-8c74b1670c74_0",namespace="memory-testing",node="node1",pod="ubuntu-5b5d6c56f6-cfr9g",service="kubelet"} 782336
    container_memory_usage_bytes{container="ubuntu",endpoint="https-metrics",id="/kubepods/besteffort/podb96dea39-b388-471e-a789-8c74b1670c74/1b93889a3e7415ad3fa040daf89f3f6bc77e569d85069de518267666ede8e21c",image="ubuntu@sha256:55cd38b70425947db71112eb5dddfa3aa3e3ce307754a3df2269069d2278ce47",instance="192.168.0.117:10250",job="kubelet",metrics_path="/metrics/cadvisor",name="k8s_ubuntu_ubuntu-5b5d6c56f6-cfr9g_memory-testing_b96dea39-b388-471e-a789-8c74b1670c74_0",namespace="memory-testing",node="node1",pod="ubuntu-5b5d6c56f6-cfr9g",service="kubelet"} 307777536
    
    $kubectl top pod--namespace=内存测试
    名称CPU(核心)内存(字节)
    ubuntu-5b5d6c56f6-cfr9g 816m 280Mi
    ubuntu-5b5d6c56f6-g6vh9 834m 278Mi
    ubuntu-5b5d6c56f6-sxldj 918m 288Mi
    ubuntu-additional-84bdf9b7fb-b9pxm 0Mi
    ubuntu-additional-84bdf9b7fb-dzt72 0Mi
    ubuntu-additional-84bdf9b7fb-k5z6w 0Mi
    
    如果您要使用以下查询查询普罗米修斯:

    container_memory_usage_bytes{namespace="memory-testing", pod=~"ubuntu.*"}
    
    您将获得与下面类似的输出(出于示例目的,它被剪切为仅显示一个pod,默认情况下,它将在名称和
    内存测试
    命名空间中显示所有带有
    ubuntu
    的pod):

    在这一点上,您需要选择您将使用的度量。在这个例子中,我使用了第一个。欲了解更多深入的信息,请参阅以下文章:

    如果我们用
    sum(QUERY)by(pod)
    来聚合这些指标,那么我们所报告的已用资源实际上会翻一番

    剖析主查询:

    container_memory_usage_bytes{namespace="memory-testing", container=""}
    
    上述查询将为每个pod输出带有已用内存度量的记录。
    container=”“
    参数仅用于获取一条没有
    container
    参数的记录(前面提到)

    kube_pod_labels{label_app=~"ubuntu.*"}
    
    上面的查询将输出带有pods的记录,以及带有regexp of
    ubuntu.*

    kube_pod_labels{label_app=~"ubuntu.*"} * on (pod) group_right(label_app) container_memory_usage_bytes{namespace="memory-testing", container=""}
    
    上述查询将把来自
    kube\u pod\u标签的
    pod
    container\u memory\u usage\u bytes
    pod
    匹配,并将
    label\u app
    添加到每个记录中

    sum (kube_pod_labels{label_app=~"ubuntu.*"} * on (pod) group_right(label_app) container_memory_usage_bytes{namespace="memory-testing", container=""}) by (label_app)
    
    上述查询将通过
    label\u app
    对记录进行汇总

    在此之后,您应该能够获得查询,该查询将使用标签(实际上是部署)对已用内存进行求和


    至于:

    我希望通过度量实现同样的效果
    kube\u pod\u容器\u资源\u限制\u内存\u字节

    假设部署中的每个pod都具有相同的限制,您可以使用下面的查询获取带有标签的部署的内存限制,如前一示例所示:

    kube_pod_labels{label_app="ubuntu-with-limits"} * on (pod) group_right(label_app) kube_pod_container_resource_limits_memory_bytes{namespace="memory-testing", pod=~".*"}
    
    您可以在此查询中应用函数,如
    avg()
    mean()
    max()
    ,以获取将作为内存限制的单个数字:

    avg(kube_pod_labels{label_app="ubuntu-with-limits"} * on (pod) group_right(label_app) kube_pod_container_resource_limits_memory_bytes{namespace="memory-testing", pod=~".*"}) by (label_app)
    
    如果使用
    VPA
    ,内存限制可能会有所不同。在这种情况下,您可以同时显示所有部署,或者使用
    avg()
    获取所有“部署”的平均值


    作为上述解决方案的一种解决办法,您可以尝试使用regexp,如下所示:

    container_memory_usage_bytes{pod=~"^ubuntu-.{6,10}-.{5}"}
    

    您好,请告诉我您是否检查了此线程:?我无法通过此任务“仅仅”解决我的问题,对不起。这非常令人遗憾