123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- /*
- Copyright The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- // This file was autogenerated by go-to-protobuf. Do not edit it manually!
- syntax = 'proto2';
- package k8s.io.api.autoscaling.v1;
- import "k8s.io/api/core/v1/generated.proto";
- import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
- import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
- import "k8s.io/apimachinery/pkg/runtime/generated.proto";
- import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
- // Package-wide variables from generator "generated".
- option go_package = "v1";
- // CrossVersionObjectReference contains enough information to let you identify the referred resource.
- message CrossVersionObjectReference {
- // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"
- optional string kind = 1;
- // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names
- optional string name = 2;
- // API version of the referent
- // +optional
- optional string apiVersion = 3;
- }
- // ExternalMetricSource indicates how to scale on a metric not associated with
- // any Kubernetes object (for example length of queue in cloud
- // messaging service, or QPS from loadbalancer running outside of cluster).
- message ExternalMetricSource {
- // metricName is the name of the metric in question.
- optional string metricName = 1;
- // metricSelector is used to identify a specific time series
- // within a given metric.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
- // targetValue is the target value of the metric (as a quantity).
- // Mutually exclusive with TargetAverageValue.
- // +optional
- optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
- // targetAverageValue is the target per-pod value of global metric (as a quantity).
- // Mutually exclusive with TargetValue.
- // +optional
- optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 4;
- }
- // ExternalMetricStatus indicates the current value of a global metric
- // not associated with any Kubernetes object.
- message ExternalMetricStatus {
- // metricName is the name of a metric used for autoscaling in
- // metric system.
- optional string metricName = 1;
- // metricSelector is used to identify a specific time series
- // within a given metric.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector metricSelector = 2;
- // currentValue is the current value of the metric (as a quantity)
- optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
- // currentAverageValue is the current value of metric averaged over autoscaled pods.
- // +optional
- optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 4;
- }
- // configuration of a horizontal pod autoscaler.
- message HorizontalPodAutoscaler {
- // Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
- // +optional
- optional HorizontalPodAutoscalerSpec spec = 2;
- // current information about the autoscaler.
- // +optional
- optional HorizontalPodAutoscalerStatus status = 3;
- }
- // HorizontalPodAutoscalerCondition describes the state of
- // a HorizontalPodAutoscaler at a certain point.
- message HorizontalPodAutoscalerCondition {
- // type describes the current condition
- optional string type = 1;
- // status is the status of the condition (True, False, Unknown)
- optional string status = 2;
- // lastTransitionTime is the last time the condition transitioned from
- // one status to another
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
- // reason is the reason for the condition's last transition.
- // +optional
- optional string reason = 4;
- // message is a human-readable explanation containing details about
- // the transition
- // +optional
- optional string message = 5;
- }
- // list of horizontal pod autoscaler objects.
- message HorizontalPodAutoscalerList {
- // Standard list metadata.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
- // list of horizontal pod autoscaler objects.
- repeated HorizontalPodAutoscaler items = 2;
- }
- // specification of a horizontal pod autoscaler.
- message HorizontalPodAutoscalerSpec {
- // reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption
- // and will set the desired number of pods by using its Scale subresource.
- optional CrossVersionObjectReference scaleTargetRef = 1;
- // minReplicas is the lower limit for the number of replicas to which the autoscaler
- // can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the
- // alpha feature gate HPAScaleToZero is enabled and at least one Object or External
- // metric is configured. Scaling is active as long as at least one metric value is
- // available.
- // +optional
- optional int32 minReplicas = 2;
- // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.
- optional int32 maxReplicas = 3;
- // target average CPU utilization (represented as a percentage of requested CPU) over all the pods;
- // if not specified the default autoscaling policy will be used.
- // +optional
- optional int32 targetCPUUtilizationPercentage = 4;
- }
- // current status of a horizontal pod autoscaler
- message HorizontalPodAutoscalerStatus {
- // most recent generation observed by this autoscaler.
- // +optional
- optional int64 observedGeneration = 1;
- // last time the HorizontalPodAutoscaler scaled the number of pods;
- // used by the autoscaler to control how often the number of pods is changed.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
- // current number of replicas of pods managed by this autoscaler.
- optional int32 currentReplicas = 3;
- // desired number of replicas of pods managed by this autoscaler.
- optional int32 desiredReplicas = 4;
- // current average CPU utilization over all pods, represented as a percentage of requested CPU,
- // e.g. 70 means that an average pod is using now 70% of its requested CPU.
- // +optional
- optional int32 currentCPUUtilizationPercentage = 5;
- }
- // MetricSpec specifies how to scale based on a single metric
- // (only `type` and one other matching field should be set at once).
- message MetricSpec {
- // type is the type of metric source. It should be one of "Object",
- // "Pods" or "Resource", each mapping to a matching field in the object.
- optional string type = 1;
- // object refers to a metric describing a single kubernetes object
- // (for example, hits-per-second on an Ingress object).
- // +optional
- optional ObjectMetricSource object = 2;
- // pods refers to a metric describing each pod in the current scale target
- // (for example, transactions-processed-per-second). The values will be
- // averaged together before being compared to the target value.
- // +optional
- optional PodsMetricSource pods = 3;
- // resource refers to a resource metric (such as those specified in
- // requests and limits) known to Kubernetes describing each pod in the
- // current scale target (e.g. CPU or memory). Such metrics are built in to
- // Kubernetes, and have special scaling options on top of those available
- // to normal per-pod metrics using the "pods" source.
- // +optional
- optional ResourceMetricSource resource = 4;
- // external refers to a global metric that is not associated
- // with any Kubernetes object. It allows autoscaling based on information
- // coming from components running outside of cluster
- // (for example length of queue in cloud messaging service, or
- // QPS from loadbalancer running outside of cluster).
- // +optional
- optional ExternalMetricSource external = 5;
- }
- // MetricStatus describes the last-read state of a single metric.
- message MetricStatus {
- // type is the type of metric source. It will be one of "Object",
- // "Pods" or "Resource", each corresponds to a matching field in the object.
- optional string type = 1;
- // object refers to a metric describing a single kubernetes object
- // (for example, hits-per-second on an Ingress object).
- // +optional
- optional ObjectMetricStatus object = 2;
- // pods refers to a metric describing each pod in the current scale target
- // (for example, transactions-processed-per-second). The values will be
- // averaged together before being compared to the target value.
- // +optional
- optional PodsMetricStatus pods = 3;
- // resource refers to a resource metric (such as those specified in
- // requests and limits) known to Kubernetes describing each pod in the
- // current scale target (e.g. CPU or memory). Such metrics are built in to
- // Kubernetes, and have special scaling options on top of those available
- // to normal per-pod metrics using the "pods" source.
- // +optional
- optional ResourceMetricStatus resource = 4;
- // external refers to a global metric that is not associated
- // with any Kubernetes object. It allows autoscaling based on information
- // coming from components running outside of cluster
- // (for example length of queue in cloud messaging service, or
- // QPS from loadbalancer running outside of cluster).
- // +optional
- optional ExternalMetricStatus external = 5;
- }
- // ObjectMetricSource indicates how to scale on a metric describing a
- // kubernetes object (for example, hits-per-second on an Ingress object).
- message ObjectMetricSource {
- // target is the described Kubernetes object.
- optional CrossVersionObjectReference target = 1;
- // metricName is the name of the metric in question.
- optional string metricName = 2;
- // targetValue is the target value of the metric (as a quantity).
- optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
- // selector is the string-encoded form of a standard kubernetes label selector for the given metric.
- // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
- // When unset, just the metricName will be used to gather metrics.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
- // averageValue is the target value of the average of the
- // metric across all relevant pods (as a quantity)
- // +optional
- optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
- }
- // ObjectMetricStatus indicates the current value of a metric describing a
- // kubernetes object (for example, hits-per-second on an Ingress object).
- message ObjectMetricStatus {
- // target is the described Kubernetes object.
- optional CrossVersionObjectReference target = 1;
- // metricName is the name of the metric in question.
- optional string metricName = 2;
- // currentValue is the current value of the metric (as a quantity).
- optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
- // selector is the string-encoded form of a standard kubernetes label selector for the given metric
- // When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
- // When unset, just the metricName will be used to gather metrics.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
- // averageValue is the current value of the average of the
- // metric across all relevant pods (as a quantity)
- // +optional
- optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
- }
- // PodsMetricSource indicates how to scale on a metric describing each pod in
- // the current scale target (for example, transactions-processed-per-second).
- // The values will be averaged together before being compared to the target
- // value.
- message PodsMetricSource {
- // metricName is the name of the metric in question
- optional string metricName = 1;
- // targetAverageValue is the target value of the average of the
- // metric across all relevant pods (as a quantity)
- optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
- // selector is the string-encoded form of a standard kubernetes label selector for the given metric
- // When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
- // When unset, just the metricName will be used to gather metrics.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
- }
- // PodsMetricStatus indicates the current value of a metric describing each pod in
- // the current scale target (for example, transactions-processed-per-second).
- message PodsMetricStatus {
- // metricName is the name of the metric in question
- optional string metricName = 1;
- // currentAverageValue is the current value of the average of the
- // metric across all relevant pods (as a quantity)
- optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
- // selector is the string-encoded form of a standard kubernetes label selector for the given metric
- // When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
- // When unset, just the metricName will be used to gather metrics.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
- }
- // ResourceMetricSource indicates how to scale on a resource metric known to
- // Kubernetes, as specified in requests and limits, describing each pod in the
- // current scale target (e.g. CPU or memory). The values will be averaged
- // together before being compared to the target. Such metrics are built in to
- // Kubernetes, and have special scaling options on top of those available to
- // normal per-pod metrics using the "pods" source. Only one "target" type
- // should be set.
- message ResourceMetricSource {
- // name is the name of the resource in question.
- optional string name = 1;
- // targetAverageUtilization is the target value of the average of the
- // resource metric across all relevant pods, represented as a percentage of
- // the requested value of the resource for the pods.
- // +optional
- optional int32 targetAverageUtilization = 2;
- // targetAverageValue is the target value of the average of the
- // resource metric across all relevant pods, as a raw value (instead of as
- // a percentage of the request), similar to the "pods" metric source type.
- // +optional
- optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3;
- }
- // ResourceMetricStatus indicates the current value of a resource metric known to
- // Kubernetes, as specified in requests and limits, describing each pod in the
- // current scale target (e.g. CPU or memory). Such metrics are built in to
- // Kubernetes, and have special scaling options on top of those available to
- // normal per-pod metrics using the "pods" source.
- message ResourceMetricStatus {
- // name is the name of the resource in question.
- optional string name = 1;
- // currentAverageUtilization is the current value of the average of the
- // resource metric across all relevant pods, represented as a percentage of
- // the requested value of the resource for the pods. It will only be
- // present if `targetAverageValue` was set in the corresponding metric
- // specification.
- // +optional
- optional int32 currentAverageUtilization = 2;
- // currentAverageValue is the current value of the average of the
- // resource metric across all relevant pods, as a raw value (instead of as
- // a percentage of the request), similar to the "pods" metric source type.
- // It will always be set, regardless of the corresponding metric specification.
- optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3;
- }
- // Scale represents a scaling request for a resource.
- message Scale {
- // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
- // +optional
- optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
- // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
- // +optional
- optional ScaleSpec spec = 2;
- // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.
- // +optional
- optional ScaleStatus status = 3;
- }
- // ScaleSpec describes the attributes of a scale subresource.
- message ScaleSpec {
- // desired number of instances for the scaled object.
- // +optional
- optional int32 replicas = 1;
- }
- // ScaleStatus represents the current status of a scale subresource.
- message ScaleStatus {
- // actual number of observed instances of the scaled object.
- optional int32 replicas = 1;
- // label query over pods that should match the replicas count. This is same
- // as the label selector but in the string format to avoid introspection
- // by clients. The string will be in the same format as the query-param syntax.
- // More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
- // +optional
- optional string selector = 2;
- }
|