Skip to content

Commit 9edd02b

Browse files
authored
Merge pull request #1835 from rexagod/1790
Deprecate VPA
2 parents e27fb87 + 2279fb2 commit 9edd02b

File tree

3 files changed

+65
-28
lines changed

3 files changed

+65
-28
lines changed

docs/verticalpodautoscaler-metrics.md

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,53 @@
11
# Vertical Pod Autoscaler Metrics
22

3-
| Metric name | Metric type | Labels/tags | Status |
4-
| -------------------------------- | ----------- | ------------------------------------------------------------- | ------ |
5-
| kube_verticalpodautoscaler_annotations | Gauge | `annotation_app`=&lt;foo&gt; <br> `namespace`=&lt;namespace&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
6-
| kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
7-
| kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
8-
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_lowerbound | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
9-
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_target | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
10-
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_uncappedtarget | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
11-
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_upperbound | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
12-
| kube_verticalpodautoscaler_labels | Gauge | `label_app`=&lt;foo&gt; <br> `namespace`=&lt;namespace&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
13-
| kube_verticalpodautoscaler_spec_updatepolicy_updatemode | Gauge | `namespace`=&lt;namespace&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `update_mode`=&lt;foo&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | EXPERIMENTAL |
3+
## DEPRECATION NOTICE
4+
5+
From v2.9.0 onwards, `vericalpodautoscalers` will be removed from the list of default resources. This means that specifying that in the `--resource` flag will **not** generate metrics for the same. In order to generate `verticalpodautoscalers` metrics, you will have to explicitly specify it in `--custom-resource-state-config*` (either the inline yaml, or the configuration file), like so:
6+
```yaml
7+
# Using --resource=verticalpodautoscalers, we get the following output:
8+
# HELP kube_verticalpodautoscaler_annotations (Deprecated since v2.9.0) Kubernetes annotations converted to Prometheus labels.
9+
# TYPE kube_verticalpodautoscaler_annotations gauge
10+
# kube_verticalpodautoscaler_annotations{namespace="default",verticalpodautoscaler="hamster-vpa",target_api_version="apps/v1",target_kind="Deployment",target_name="hamster"} 1
11+
# A similar result can be achieved by specifying the following in --custom-resource-state-config:
12+
kind: CustomResourceStateMetrics
13+
spec:
14+
resources:
15+
- groupVersionKind:
16+
group: autoscaling.k8s.io
17+
kind: "VerticalPodAutoscaler"
18+
version: "v1"
19+
labelsFromPath:
20+
verticalpodautoscaler: [metadata, name]
21+
namespace: [metadata, namespace]
22+
target_api_version: [apiVersion]
23+
target_kind: [spec, targetRef, kind]
24+
target_name: [spec, targetRef, name]
25+
metrics:
26+
- name: "annotations"
27+
help: "Kubernetes annotations converted to Prometheus labels."
28+
each:
29+
type: Gauge
30+
gauge:
31+
path: [metadata, annotations]
32+
# This will output the following metric:
33+
# HELP kube_crd_autoscaling_k8s_io_v1_VerticalPodAutoscaler_annotations Kubernetes annotations converted to Prometheus labels.
34+
# TYPE kube_crd_autoscaling_k8s_io_v1_VerticalPodAutoscaler_annotations gauge
35+
# kube_crd_autoscaling_k8s_io_v1_VerticalPodAutoscaler_annotations{namespace="default",target_api_version="autoscaling.k8s.io/v1",target_kind="Deployment",target_name="hamster",verticalpodautoscaler="hamster-vpa"} 123
36+
```
37+
PS. The above configuration was tested on [this](https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/examples/hamster.yaml) VPA configuration, with an added annotation (`foo: 123`).
38+
***
39+
40+
| Metric name | Metric type | Labels/tags | Status |
41+
| -------------------------------- | ----------- | ------------------------------------------------------------- | ------ |
42+
| kube_verticalpodautoscaler_annotations | Gauge | `annotation_app`=&lt;foo&gt; <br> `namespace`=&lt;namespace&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
43+
| kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
44+
| kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
45+
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_lowerbound | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
46+
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_target | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
47+
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_uncappedtarget | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
48+
| kube_verticalpodautoscaler_status_recommendation_containerrecommendations_upperbound | Gauge | `container`=&lt;container name&gt; <br> `namespace`=&lt;namespace&gt; <br> `resource`=&lt;cpu memory&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `unit`=&lt;core byte&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
49+
| kube_verticalpodautoscaler_labels | Gauge | `label_app`=&lt;foo&gt; <br> `namespace`=&lt;namespace&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
50+
| kube_verticalpodautoscaler_spec_updatepolicy_updatemode | Gauge | `namespace`=&lt;namespace&gt; <br> `target_api_version`=&lt;api version&gt; <br> `target_kind`=&lt;target kind&gt; <br> `target_name`=&lt;target name&gt; <br> `update_mode`=&lt;foo&gt; <br> `verticalpodautoscaler`=&lt;vertical pod autoscaler name&gt; | DEPRECATED |
1451

1552
## Configuration
1653

internal/store/verticalpodautoscaler.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
4848
descVerticalPodAutoscalerAnnotationsName,
4949
descVerticalPodAutoscalerAnnotationsHelp,
5050
metric.Gauge,
51-
"",
51+
"v2.9.0",
5252
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
5353
annotationKeys, annotationValues := createPrometheusLabelKeysValues("annotation", a.Annotations, allowAnnotationsList)
5454
return &metric.Family{
@@ -66,7 +66,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
6666
descVerticalPodAutoscalerLabelsName,
6767
descVerticalPodAutoscalerLabelsHelp,
6868
metric.Gauge,
69-
"",
69+
"v2.9.0",
7070
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
7171
labelKeys, labelValues := createPrometheusLabelKeysValues("label", a.Labels, allowLabelsList)
7272
return &metric.Family{
@@ -84,7 +84,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
8484
"kube_verticalpodautoscaler_spec_updatepolicy_updatemode",
8585
"Update mode of the VerticalPodAutoscaler.",
8686
metric.Gauge,
87-
"",
87+
"v2.9.0",
8888
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
8989
ms := []*metric.Metric{}
9090

@@ -122,7 +122,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
122122
"kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed",
123123
"Minimum resources the VerticalPodAutoscaler can set for containers matching the name.",
124124
metric.Gauge,
125-
"",
125+
"v2.9.0",
126126
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
127127
ms := []*metric.Metric{}
128128
if a.Spec.ResourcePolicy == nil || a.Spec.ResourcePolicy.ContainerPolicies == nil {
@@ -144,7 +144,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
144144
"kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed",
145145
"Maximum resources the VerticalPodAutoscaler can set for containers matching the name.",
146146
metric.Gauge,
147-
"",
147+
"v2.9.0",
148148
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
149149
ms := []*metric.Metric{}
150150
if a.Spec.ResourcePolicy == nil || a.Spec.ResourcePolicy.ContainerPolicies == nil {
@@ -165,7 +165,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
165165
"kube_verticalpodautoscaler_status_recommendation_containerrecommendations_lowerbound",
166166
"Minimum resources the container can use before the VerticalPodAutoscaler updater evicts it.",
167167
metric.Gauge,
168-
"",
168+
"v2.9.0",
169169
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
170170
ms := []*metric.Metric{}
171171
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {
@@ -186,7 +186,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
186186
"kube_verticalpodautoscaler_status_recommendation_containerrecommendations_upperbound",
187187
"Maximum resources the container can use before the VerticalPodAutoscaler updater evicts it.",
188188
metric.Gauge,
189-
"",
189+
"v2.9.0",
190190
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
191191
ms := []*metric.Metric{}
192192
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {
@@ -207,7 +207,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
207207
"kube_verticalpodautoscaler_status_recommendation_containerrecommendations_target",
208208
"Target resources the VerticalPodAutoscaler recommends for the container.",
209209
metric.Gauge,
210-
"",
210+
"v2.9.0",
211211
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
212212
ms := []*metric.Metric{}
213213
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {
@@ -227,7 +227,7 @@ func vpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
227227
"kube_verticalpodautoscaler_status_recommendation_containerrecommendations_uncappedtarget",
228228
"Target resources the VerticalPodAutoscaler recommends for the container ignoring bounds.",
229229
metric.Gauge,
230-
"",
230+
"v2.9.0",
231231
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
232232
ms := []*metric.Metric{}
233233
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {

internal/store/verticalpodautoscaler_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ import (
3030

3131
func TestVPAStore(t *testing.T) {
3232
const metadata = `
33-
# HELP kube_verticalpodautoscaler_labels Kubernetes labels converted to Prometheus labels.
34-
# HELP kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed Maximum resources the VerticalPodAutoscaler can set for containers matching the name.
35-
# HELP kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed Minimum resources the VerticalPodAutoscaler can set for containers matching the name.
36-
# HELP kube_verticalpodautoscaler_spec_updatepolicy_updatemode Update mode of the VerticalPodAutoscaler.
37-
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_lowerbound Minimum resources the container can use before the VerticalPodAutoscaler updater evicts it.
38-
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_target Target resources the VerticalPodAutoscaler recommends for the container.
39-
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_uncappedtarget Target resources the VerticalPodAutoscaler recommends for the container ignoring bounds.
40-
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_upperbound Maximum resources the container can use before the VerticalPodAutoscaler updater evicts it.
33+
# HELP kube_verticalpodautoscaler_labels (Deprecated since v2.9.0) Kubernetes labels converted to Prometheus labels.
34+
# HELP kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed (Deprecated since v2.9.0) Maximum resources the VerticalPodAutoscaler can set for containers matching the name.
35+
# HELP kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed (Deprecated since v2.9.0) Minimum resources the VerticalPodAutoscaler can set for containers matching the name.
36+
# HELP kube_verticalpodautoscaler_spec_updatepolicy_updatemode (Deprecated since v2.9.0) Update mode of the VerticalPodAutoscaler.
37+
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_lowerbound (Deprecated since v2.9.0) Minimum resources the container can use before the VerticalPodAutoscaler updater evicts it.
38+
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_target (Deprecated since v2.9.0) Target resources the VerticalPodAutoscaler recommends for the container.
39+
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_uncappedtarget (Deprecated since v2.9.0) Target resources the VerticalPodAutoscaler recommends for the container ignoring bounds.
40+
# HELP kube_verticalpodautoscaler_status_recommendation_containerrecommendations_upperbound (Deprecated since v2.9.0) Maximum resources the container can use before the VerticalPodAutoscaler updater evicts it.
4141
# TYPE kube_verticalpodautoscaler_labels gauge
4242
# TYPE kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed gauge
4343
# TYPE kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed gauge

0 commit comments

Comments
 (0)