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