Skip to content

Commit

Permalink
Add config APIs metrics API
Browse files Browse the repository at this point in the history
The 'metrics.k8s.io' APIs are exposed by the 'metrics-server' component to facilitate
auto-scaling. The other two APIs are for fetching metrics from custom or
external sources respectively.
  • Loading branch information
tengqm committed Sep 19, 2023
1 parent 70b445f commit bc4758e
Show file tree
Hide file tree
Showing 6 changed files with 539 additions and 11 deletions.
9 changes: 9 additions & 0 deletions content/en/docs/reference/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,15 @@ operator to use or manage a cluster.
* [v1beta3](/docs/reference/config-api/kubeadm-config.v1beta3/)
* [v1beta4](/docs/reference/config-api/kubeadm-config.v1beta4/)

## External APIs

These are the APIs defined by the Kubernetes project, but are not implemented
by the core project:

* [Metrics API (v1beta1)](/docs/reference/external-api/metrics.v1beta1/)
* [Custom Metrics API (v1beta2)](/docs/reference/external-api/custom-metrics.v1beta2)
* [External Metrics API (v1beta1)](/docs/reference/external-api/external-metrics.v1beta1)

## Design Docs

An archive of the design docs for Kubernetes functionality. Good starting points are
Expand Down
4 changes: 4 additions & 0 deletions content/en/docs/reference/external-api/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: External APIs
weight: 135
---
177 changes: 177 additions & 0 deletions content/en/docs/reference/external-api/custom-metrics.v1beta2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
---
title: Kubernetes Custom Metrics (v1beta2)
content_type: tool-reference
package: custom.metrics.k8s.io/v1beta2
auto_generated: true
---
<p>Package v1beta2 is the v1beta2 version of the custom_metrics API.</p>


## Resource Types


- [MetricListOptions](#custom-metrics-k8s-io-v1beta2-MetricListOptions)
- [MetricValue](#custom-metrics-k8s-io-v1beta2-MetricValue)
- [MetricValueList](#custom-metrics-k8s-io-v1beta2-MetricValueList)



## `MetricListOptions` {#custom-metrics-k8s-io-v1beta2-MetricListOptions}



<p>MetricListOptions is used to select metrics by their label selectors</p>


<table class="table">
<thead><tr><th width="30%">Field</th><th>Description</th></tr></thead>
<tbody>

<tr><td><code>apiVersion</code><br/>string</td><td><code>custom.metrics.k8s.io/v1beta2</code></td></tr>
<tr><td><code>kind</code><br/>string</td><td><code>MetricListOptions</code></td></tr>


<tr><td><code>labelSelector</code><br/>
<code>string</code>
</td>
<td>
<p>A selector to restrict the list of returned objects by their labels.
Defaults to everything.</p>
</td>
</tr>
<tr><td><code>metricLabelSelector</code><br/>
<code>string</code>
</td>
<td>
<p>A selector to restrict the list of returned metrics by their labels</p>
</td>
</tr>
</tbody>
</table>

## `MetricValue` {#custom-metrics-k8s-io-v1beta2-MetricValue}


**Appears in:**

- [MetricValueList](#custom-metrics-k8s-io-v1beta2-MetricValueList)


<p>MetricValue is the metric value for some object</p>


<table class="table">
<thead><tr><th width="30%">Field</th><th>Description</th></tr></thead>
<tbody>

<tr><td><code>apiVersion</code><br/>string</td><td><code>custom.metrics.k8s.io/v1beta2</code></td></tr>
<tr><td><code>kind</code><br/>string</td><td><code>MetricValue</code></td></tr>


<tr><td><code>describedObject</code> <B>[Required]</B><br/>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#objectreference-v1-core"><code>core/v1.ObjectReference</code></a>
</td>
<td>
<p>a reference to the described object</p>
</td>
</tr>
<tr><td><code>metric</code> <B>[Required]</B><br/>
<a href="#custom-metrics-k8s-io-v1beta2-MetricIdentifier"><code>MetricIdentifier</code></a>
</td>
<td>
<span class="text-muted">No description provided.</span></td>
</tr>
<tr><td><code>timestamp</code> <B>[Required]</B><br/>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#time-v1-meta"><code>meta/v1.Time</code></a>
</td>
<td>
<p>indicates the time at which the metrics were produced</p>
</td>
</tr>
<tr><td><code>windowSeconds</code> <B>[Required]</B><br/>
<code>int64</code>
</td>
<td>
<p>indicates the window ([Timestamp-Window, Timestamp]) from
which these metrics were calculated, when returning rate
metrics calculated from cumulative metrics (or zero for
non-calculated instantaneous metrics).</p>
</td>
</tr>
<tr><td><code>value</code> <B>[Required]</B><br/>
<a href="https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity"><code>k8s.io/apimachinery/pkg/api/resource.Quantity</code></a>
</td>
<td>
<p>the value of the metric for this</p>
</td>
</tr>
</tbody>
</table>

## `MetricValueList` {#custom-metrics-k8s-io-v1beta2-MetricValueList}



<p>MetricValueList is a list of values for a given metric for some set of objects</p>


<table class="table">
<thead><tr><th width="30%">Field</th><th>Description</th></tr></thead>
<tbody>

<tr><td><code>apiVersion</code><br/>string</td><td><code>custom.metrics.k8s.io/v1beta2</code></td></tr>
<tr><td><code>kind</code><br/>string</td><td><code>MetricValueList</code></td></tr>


<tr><td><code>metadata</code> <B>[Required]</B><br/>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#listmeta-v1-meta"><code>meta/v1.ListMeta</code></a>
</td>
<td>
<span class="text-muted">No description provided.</span></td>
</tr>
<tr><td><code>items</code> <B>[Required]</B><br/>
<a href="#custom-metrics-k8s-io-v1beta2-MetricValue"><code>[]MetricValue</code></a>
</td>
<td>
<p>the value of the metric across the described objects</p>
</td>
</tr>
</tbody>
</table>

## `MetricIdentifier` {#custom-metrics-k8s-io-v1beta2-MetricIdentifier}


**Appears in:**

- [MetricValue](#custom-metrics-k8s-io-v1beta2-MetricValue)


<p>MetricIdentifier identifies a metric by name and, optionally, selector</p>


<table class="table">
<thead><tr><th width="30%">Field</th><th>Description</th></tr></thead>
<tbody>


<tr><td><code>name</code> <B>[Required]</B><br/>
<code>string</code>
</td>
<td>
<p>name is the name of the given metric</p>
</td>
</tr>
<tr><td><code>selector</code><br/>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#labelselector-v1-meta"><code>meta/v1.LabelSelector</code></a>
</td>
<td>
<p>selector represents the label selector that could be used to select
this metric, and will generally just be the selector passed in to
the query used to fetch this metric.
When left blank, only the metric's Name will be used to gather metrics.</p>
</td>
</tr>
</tbody>
</table>

110 changes: 110 additions & 0 deletions content/en/docs/reference/external-api/external-metrics.v1beta1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: Kubernetes External Metrics (v1beta1)
content_type: tool-reference
package: external.metrics.k8s.io/v1beta1
auto_generated: true
---
<p>Package v1beta1 is the v1beta1 version of the external metrics API.</p>


## Resource Types


- [ExternalMetricValue](#external-metrics-k8s-io-v1beta1-ExternalMetricValue)
- [ExternalMetricValueList](#external-metrics-k8s-io-v1beta1-ExternalMetricValueList)



## `ExternalMetricValue` {#external-metrics-k8s-io-v1beta1-ExternalMetricValue}


**Appears in:**

- [ExternalMetricValueList](#external-metrics-k8s-io-v1beta1-ExternalMetricValueList)


<p>ExternalMetricValue is a metric value for external metric
A single metric value is identified by metric name and a set of string labels.
For one metric there can be multiple values with different sets of labels.</p>


<table class="table">
<thead><tr><th width="30%">Field</th><th>Description</th></tr></thead>
<tbody>

<tr><td><code>apiVersion</code><br/>string</td><td><code>external.metrics.k8s.io/v1beta1</code></td></tr>
<tr><td><code>kind</code><br/>string</td><td><code>ExternalMetricValue</code></td></tr>


<tr><td><code>metricName</code> <B>[Required]</B><br/>
<code>string</code>
</td>
<td>
<p>the name of the metric</p>
</td>
</tr>
<tr><td><code>metricLabels</code> <B>[Required]</B><br/>
<code>map[string]string</code>
</td>
<td>
<p>a set of labels that identify a single time series for the metric</p>
</td>
</tr>
<tr><td><code>timestamp</code> <B>[Required]</B><br/>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#time-v1-meta"><code>meta/v1.Time</code></a>
</td>
<td>
<p>indicates the time at which the metrics were produced</p>
</td>
</tr>
<tr><td><code>window</code> <B>[Required]</B><br/>
<code>int64</code>
</td>
<td>
<p>indicates the window ([Timestamp-Window, Timestamp]) from
which these metrics were calculated, when returning rate
metrics calculated from cumulative metrics (or zero for
non-calculated instantaneous metrics).</p>
</td>
</tr>
<tr><td><code>value</code> <B>[Required]</B><br/>
<a href="https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity"><code>k8s.io/apimachinery/pkg/api/resource.Quantity</code></a>
</td>
<td>
<p>the value of the metric</p>
</td>
</tr>
</tbody>
</table>

## `ExternalMetricValueList` {#external-metrics-k8s-io-v1beta1-ExternalMetricValueList}



<p>ExternalMetricValueList is a list of values for a given metric for some set labels</p>


<table class="table">
<thead><tr><th width="30%">Field</th><th>Description</th></tr></thead>
<tbody>

<tr><td><code>apiVersion</code><br/>string</td><td><code>external.metrics.k8s.io/v1beta1</code></td></tr>
<tr><td><code>kind</code><br/>string</td><td><code>ExternalMetricValueList</code></td></tr>


<tr><td><code>metadata</code> <B>[Required]</B><br/>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#listmeta-v1-meta"><code>meta/v1.ListMeta</code></a>
</td>
<td>
<span class="text-muted">No description provided.</span></td>
</tr>
<tr><td><code>items</code> <B>[Required]</B><br/>
<a href="#external-metrics-k8s-io-v1beta1-ExternalMetricValue"><code>[]ExternalMetricValue</code></a>
</td>
<td>
<p>value of the metric matching a given set of labels</p>
</td>
</tr>
</tbody>
</table>

Loading

0 comments on commit bc4758e

Please sign in to comment.