簡體   English   中英

Kubernetes HPA使用Prometheus Node-Exporter的指標

[英]Kubernetes HPA with metrics from Prometheus Node-Exporter

我有一個運行某些工作負載的kubernetes v1.12.1集群。 我想設置HPA,以便可以根據來自Prometheus Node-Exporter的指標擴展特定的POD。

我的第一個問題是,甚至可以對“ POD”度量標准名稱空間之外的度量標准執行HPA嗎? 如果是這樣,那么這就是我要嘗試的其余部分。 我已經設置了Prometheus Node-Exporter來收集機器/節點指標並將其發送給Prometheus。 Prometheus通過prometheus適配器將這些發送到Kubernetes。 我想基於這些節點度量值之一執行POD自動縮放。

例如,如果:node_netstat_Udp_NoPorts> ='1',我將要擴展一個額外的POD。 如果node_sockstat_udp_mem> ='87380',我也想擴展並對主機執行稍微的內核級修改。

我遇到的問題是,找不到關於如何為自定義指標不屬於“ POD”指標名稱空間的POD設置HPA的任何示例。

如您在下面的API get命令中所見,這些指標向我公開。

<pre>
ᐅ kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1|jq .|grep -i udp
  "name": "jobs.batch/node_netstat_Udp_InErrors",
  "name": "roles.rbac.authorization.k8s.io/node_netstat_Udp6_NoPorts",
  "name": 
"roles.rbac.authorization.k8s.io/node_netstat_UdpLite6_InErrors",
  "name": "jobs.batch/node_netstat_Udp_InDatagrams",
  "name": "jobs.batch/node_sockstat_UDP_mem_bytes",
  "name": "jobs.batch/node_sockstat_UDP_inuse",
  "name": 
"roles.rbac.authorization.k8s.io/node_netstat_Udp_InDatagrams",
  "name": "jobs.batch/node_sockstat_UDP_mem",
  "name": "jobs.batch/node_netstat_Udp_NoPorts",
  "name": "roles.rbac.authorization.k8s.io/node_sockstat_UDP_mem",
  "name": "roles.rbac.authorization.k8s.io/node_netstat_Udp_NoPorts",
  "name": "jobs.batch/node_netstat_Udp6_OutDatagrams",
  "name": "jobs.batch/node_netstat_Udp6_NoPorts",
  "name": "jobs.batch/node_netstat_UdpLite6_InErrors",
  "name": "roles.rbac.authorization.k8s.io/node_netstat_Udp6_InErrors",
  "name": 
"roles.rbac.authorization.k8s.io/node_netstat_Udp6_InDatagrams",
  "name": 
"roles.rbac.authorization.k8s.io/node_netstat_Udp6_OutDatagrams",
  "name": "roles.rbac.authorization.k8s.io/node_sockstat_UDP_inuse",
  "name": 
"roles.rbac.authorization.k8s.io/node_sockstat_UDP_mem_bytes",
  "name": "jobs.batch/node_netstat_Udp6_InDatagrams",
  "name": "jobs.batch/node_netstat_Udp_OutDatagrams",
  "name": 
"roles.rbac.authorization.k8s.io/node_netstat_UdpLite_InErrors",
  "name": "jobs.batch/node_netstat_UdpLite_InErrors",
  "name": 
"roles.rbac.authorization.k8s.io/node_sockstat_UDPLITE_inuse",
  "name": "jobs.batch/node_netstat_Udp6_InErrors",
  "name": 
"roles.rbac.authorization.k8s.io/node_netstat_Udp_OutDatagrams",
  "name": "jobs.batch/node_sockstat_UDPLITE_inuse",
  "name": "roles.rbac.authorization.k8s.io/node_netstat_Udp_InErrors"
</pre>

我只是不明白如何將其中之一添加到HPA描述符中:

apiVersion: autoscaling/v2beta2                                                                                                   
   kind: HorizontalPodAutoscaler                                                                                                     
   metadata:                                                                                                                         
     name: atl                                                                                                                       
     namespace: blackhole                                                                                                             
   spec:                                                                                                                             
     scaleTargetRef:                                                                                                                 
       apiVersion: apps/v1                                                                                                           
       kind: Deployment                                                                                                              
       name: awesome-app                                                                                                                   
     minReplicas: 1                                                                                                                  
     maxReplicas: 10                                                                                                                 
     metrics:                                                                                                                        
     - type: Resource                                                                                                                
       resource:  ????????                                                                                                                   
         name:  ???????????                                                                                                           
         target:  ???????????

如果有人可以幫助我指出正確的方向,那就太好了。

謝謝!

該文檔有點粗略,但是我相信您會使用類似以下的內容:

apiVersion: autoscaling/v2beta2                                                                                                   
kind: HorizontalPodAutoscaler                                                                                                     
metadata:                                                                                                                         
  name: atl                                                                                                                       
  namespace: blackhole                                                                                                             
spec:                                                                                                                             
  scaleTargetRef:                                                                                                                 
    apiVersion: apps/v1                                                                                                           
    kind: Deployment                                                                                                              
    name: awesome-app                                                                                                                   
  minReplicas: 1                                                                                                                  
  maxReplicas: 10                                                                                                                 
  metrics:
  - type: Object
    object:
      metric:
        name: node_sockstat_UDP_inuse
      describedObject:
        apiVersion: extensions/v1beta1
         kind: Job
        name: your-job-name
      target:
        kind: Value
        value: 20                                                                                                                     

按照docs type: Resource默認情況下, type: Resource僅限於cpu和內存指標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM