繁体   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