<p>Is there a way to scale the pods based on pod disk I/O pressure/utilization/IO wait, rather than simple plain CPU and RAM usage?  OR maybe a combination of disk IO along with RAM and CPU usage.</p>

<p>something like:</p>

<pre><code>metrics:
  - type: Resource
    resource:
      name: disk
      target:
        type: Utilization
        averageUtilization: 60
</code></pre>

Ijaz Ahmad
<p>You should be able to do it with <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis" rel="nofollow noreferrer">custom metrics</a>. So if you have something like <a href="https://prometheus.io/" rel="nofollow noreferrer">Prometheus</a> in your cluster which is one of the most popular Kubernetes monitoring solutions you can use the <a href="https://github.com/DirectXMan12/k8s-prometheus-adapter" rel="nofollow noreferrer">k8s-prometheus-adapter</a></p>

<p>There also a walkthrough <a href="https://github.com/DirectXMan12/k8s-prometheus-adapter/blob/master/docs/walkthrough.md" rel="nofollow noreferrer">here</a>.</p>

<p>For that walkthrough, you will have to use <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics" rel="nofollow noreferrer"><code>Pod</code> type of metric</a> in your <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/" rel="nofollow noreferrer">HPA</a>.</p>

<p>For Disk I/O not sure if you mean system disk I/O or Pod disk I/O or PV disk I/O, I don't think there's a solution for all of those together. On the node side, you could scrape the I/O node metrics from the <a href="https://github.com/prometheus/node_exporter" rel="nofollow noreferrer">nodeexporter</a>. I don't think there's a <a href="https://github.com/brancz/kube-pod-exporter" rel="nofollow noreferrer">pod exporter</a> that exports metrics at the pod level.</p>

<p>Also, for metrics that are not Pod type, they will have to be defined as the Object type in your HPA.</p>
