[英]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.