mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-24 19:38:02 +00:00
address issue #1488; clean up linewrap and some minor editing issues in the docs/design/* tree
Signed-off-by: mikebrow <brownwm@us.ibm.com>
This commit is contained in:
@@ -38,21 +38,24 @@ Documentation for other releases can be found at
|
||||
|
||||
This document describes a new API resource, `MetadataPolicy`, that configures an
|
||||
admission controller to take one or more actions based on an object's metadata.
|
||||
Initially the metadata fields that the predicates can examine are labels and annotations,
|
||||
and the actions are to add one or more labels and/or annotations, or to reject creation/update
|
||||
of the object. In the future other actions might be supported, such as applying an initializer.
|
||||
Initially the metadata fields that the predicates can examine are labels and
|
||||
annotations, and the actions are to add one or more labels and/or annotations,
|
||||
or to reject creation/update of the object. In the future other actions might be
|
||||
supported, such as applying an initializer.
|
||||
|
||||
The first use of `MetadataPolicy` will be to decide which scheduler should schedule a pod
|
||||
in a [multi-scheduler](../proposals/multiple-schedulers.md) Kubernetes system. In particular, the
|
||||
policy will add the scheduler name annotation to a pod based on an annotation that
|
||||
is already on the pod that indicates the QoS of the pod.
|
||||
(That annotation was presumably set by a simpler admission controller that
|
||||
uses code, rather than configuration, to map the resource requests and limits of a pod
|
||||
to QoS, and attaches the corresponding annotation.)
|
||||
The first use of `MetadataPolicy` will be to decide which scheduler should
|
||||
schedule a pod in a [multi-scheduler](../proposals/multiple-schedulers.md)
|
||||
Kubernetes system. In particular, the policy will add the scheduler name
|
||||
annotation to a pod based on an annotation that is already on the pod that
|
||||
indicates the QoS of the pod. (That annotation was presumably set by a simpler
|
||||
admission controller that uses code, rather than configuration, to map the
|
||||
resource requests and limits of a pod to QoS, and attaches the corresponding
|
||||
annotation.)
|
||||
|
||||
We anticipate a number of other uses for `MetadataPolicy`, such as defaulting for
|
||||
labels and annotations, prohibiting/requiring particular labels or annotations, or
|
||||
choosing a scheduling policy within a scheduler. We do not discuss them in this doc.
|
||||
We anticipate a number of other uses for `MetadataPolicy`, such as defaulting
|
||||
for labels and annotations, prohibiting/requiring particular labels or
|
||||
annotations, or choosing a scheduling policy within a scheduler. We do not
|
||||
discuss them in this doc.
|
||||
|
||||
|
||||
## API
|
||||
@@ -126,7 +129,8 @@ type MetadataPolicyList struct {
|
||||
## Implementation plan
|
||||
|
||||
1. Create `MetadataPolicy` API resource
|
||||
1. Create admission controller that implements policies defined in `MetadataPolicy`
|
||||
1. Create admission controller that implements policies defined in
|
||||
`MetadataPolicy`
|
||||
1. Create admission controller that sets annotation
|
||||
`scheduler.alpha.kubernetes.io/qos: <QoS>`
|
||||
(where `QOS` is one of `Guaranteed, Burstable, BestEffort`)
|
||||
@@ -134,30 +138,32 @@ based on pod's resource request and limit.
|
||||
|
||||
## Future work
|
||||
|
||||
Longer-term we will have QoS be set on create and update by the registry, similar to `Pending` phase today,
|
||||
instead of having an admission controller (that runs before the one that takes `MetadataPolicy` as input)
|
||||
do it.
|
||||
Longer-term we will have QoS be set on create and update by the registry,
|
||||
similar to `Pending` phase today, instead of having an admission controller
|
||||
(that runs before the one that takes `MetadataPolicy` as input) do it.
|
||||
|
||||
We plan to eventually move from having an admission controller
|
||||
set the scheduler name as a pod annotation, to using the initializer concept. In particular, the
|
||||
scheduler will be an initializer, and the admission controller that decides which scheduler to use
|
||||
will add the scheduler's name to the list of initializers for the pod (presumably the scheduler
|
||||
will be the last initializer to run on each pod).
|
||||
The admission controller would still be configured using the `MetadataPolicy` described here, only the
|
||||
mechanism the admission controller uses to record its decision of which scheduler to use would change.
|
||||
We plan to eventually move from having an admission controller set the scheduler
|
||||
name as a pod annotation, to using the initializer concept. In particular, the
|
||||
scheduler will be an initializer, and the admission controller that decides
|
||||
which scheduler to use will add the scheduler's name to the list of initializers
|
||||
for the pod (presumably the scheduler will be the last initializer to run on
|
||||
each pod). The admission controller would still be configured using the
|
||||
`MetadataPolicy` described here, only the mechanism the admission controller
|
||||
uses to record its decision of which scheduler to use would change.
|
||||
|
||||
## Related issues
|
||||
|
||||
The main issue for multiple schedulers is #11793. There was also a lot of discussion
|
||||
in PRs #17197 and #17865.
|
||||
The main issue for multiple schedulers is #11793. There was also a lot of
|
||||
discussion in PRs #17197 and #17865.
|
||||
|
||||
We could use the approach described here to choose a scheduling
|
||||
policy within a single scheduler, as opposed to choosing a scheduler, a desire mentioned in #9920.
|
||||
Issue #17097 describes a scenario unrelated to scheduler-choosing where `MetadataPolicy` could be used.
|
||||
Issue #17324 proposes to create a generalized API for matching
|
||||
"claims" to "service classes"; matching a pod to a scheduler would be one use for such an API.
|
||||
We could use the approach described here to choose a scheduling policy within a
|
||||
single scheduler, as opposed to choosing a scheduler, a desire mentioned in
|
||||
|
||||
# 9920. Issue #17097 describes a scenario unrelated to scheduler-choosing where
|
||||
|
||||
`MetadataPolicy` could be used. Issue #17324 proposes to create a generalized
|
||||
API for matching "claims" to "service classes"; matching a pod to a scheduler
|
||||
would be one use for such an API.
|
||||
|
||||
|
||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||
|
Reference in New Issue
Block a user