Metrics
The metric configuration defines which metric type is watched by the Autoscaler.
Setting metrics per revision
For per-revision configuration, this is determined using the autoscaling.knative.dev/metric
annotation. The possible metric types that can be configured per revision depend on the type of Autoscaler implementation you are using:
- The default KPA Autoscaler supports the
concurrency
andrps
metrics. - The HPA Autoscaler supports the
cpu
metric.
For more information about KPA and HPA, see the documentation on Supported Autoscaler types.
- Per-revision annotation key:
autoscaling.knative.dev/metric
- Possible values:
"concurrency"
,"rps"
,"cpu"
,"memory"
or any custom metric name, depending on your Autoscaler type. The"cpu"
,"memory"
, and"custom"
metrics are only supported on revisions that use the HPA class. - Default:
"concurrency"
Per-revision concurrency configurationPer-revision rps configurationPer-revision cpu configurationPer-revision memory configurationPer-revision custom metric configuration
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/metric: "concurrency"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/metric: "rps"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev"
autoscaling.knative.dev/metric: "cpu"
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev"
autoscaling.knative.dev/metric: "memory"
You can create an HPA to scale the revision by a metric that you specify. The HPA will be configured to use the average value of your metric over all the Pods of the revision.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
metadata:
annotations:
autoscaling.knative.dev/class: "hpa.autoscaling.knative.dev"
autoscaling.knative.dev/metric: "<metric-name>"
Where <metric-name>
is your custom metric.
Next steps
- Configure concurrency targets for applications
- Configure requests per second targets for replicas of an application