我有一个运行某些工作负载的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设置HPA的任何示例,其中自定义指标不属于“ POD”指标名称空间。
您可以在下面的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: ???????????
如果有人可以帮助我指出正确的方向,那将很棒。
谢谢!
答案 0 :(得分:1)
文档有点粗略,但是我相信您会使用类似这样的内容:
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
,默认情况下仅限于CPU和内存指标。