Skip to content

Commit 9793b46

Browse files
added graduation criteria
1 parent cc6bc35 commit 9793b46

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

keps/sig-node/585-runtime-class/README.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@
5050
control plane. RuntimeClasses are assigned to pods through a `runtimeClass` field on the
5151
`PodSpec`. This provides a new mechanism for supporting multiple runtimes in a cluster and/or node.
5252

53-
See also [RuntimeClass Scheduling](runtime-class-scheduling.md) for the latest updates on scheduling.
54-
5553
## Motivation
5654

5755
There is growing interest in using different runtimes within a cluster. [Sandboxes][] are the
@@ -63,8 +61,7 @@ configured in the cluster and surface their properties (both to the cluster & th
6361
In addition to selecting the runtime to use, supporting multiple runtimes raises other problems to
6462
the control plane level, including: accounting for runtime overhead, scheduling to nodes that
6563
support the runtime, and surfacing which optional features are supported by different
66-
runtimes. Although these problems are not tackled by this initial proposal, RuntimeClass provides a
67-
cluster-scoped resource tied to the runtime that can help solve these problems in a future update.
64+
runtimes. See [RuntimeClass Scheduling](#runtimeclass-scheduling) for information about scheduling.
6865

6966
[Sandboxes]: https://docs.google.com/document/d/1QQ5u1RBDLXWvC8K3pscTtTRThsOeBSts_imYEoRyw8A/edit
7067

@@ -305,17 +302,6 @@ following two areas and is finished (tracked in
305302
is added to track the duration of RunPodSandbox operations, broken down by
306303
RuntimeClass.
307304

308-
The following monitoring areas will be skipped for now, but may be considered
309-
after the RuntimeClass scheduling is implemented:
310-
311-
- how many runtimes does a cluster support?
312-
- how many scheduling failures were caused by unsupported runtimes or insufficient
313-
resources of a certain runtime?
314-
315-
Currently, we assume that all the nodes in a cluster are homogeneous. After
316-
heterogeneous clusters are implemented, we may need to monitor how many runtimes
317-
a node supports.
318-
319305
### Risks and Mitigations
320306

321307
**Scope creep.** RuntimeClass has a fairly broad charter, but it should not become a default
@@ -362,9 +348,9 @@ possible to run a heterogeneous cluster, but pod authors would need to set
362348
appropriate [NodeSelector][] rules and [tolerations][taint-and-toleration] to
363349
ensure the pods landed on supporting nodes.
364350

365-
As [use cases](#user-stories) have appeared and solidified, it has become clear
366-
that heterogeneous clusters will not be uncommmon, and supporting a smoother
367-
user experience will be valuable.
351+
As [use cases](#runtimeclass-scheduling -user-stories) have appeared and solidified,
352+
it has become clear that heterogeneous clusters will not be uncommmon, and supporting
353+
a smoother user experience will be valuable.
368354

369355
[NodeSelector]: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
370356
[taint-and-toleration]: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
@@ -712,6 +698,16 @@ Beta:
712698

713699
[cri-validation]: https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/validation.md
714700

701+
Stable:
702+
703+
- [x] Wide adoption of the feature
704+
- [x] Google relies on RuntimeClass in [gVisor](https://gvisor.dev/).
705+
- [x] RedHat uses RuntimeClass to install [kata](https://github.com/openshift/kata-operator) on OpenShift with CRI-O. Another use case is around using a custom runtime class for enabling user namespaces for certain workloads. We would like to rely on RuntimeClass to distinguish between Windows and Linux pods and have the security policies defaulted differently for Linux pods. We also want to use RuntimeClasses to differentiate between different flavors of Windows OSes as there is a tight coupling between a Windows Containers and the Windows host.
706+
- [x] Microsoft has plans to use RuntimeClass to control runtime to enable [Hyper-V isolated containers](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/hyperv-container) (which allow running containers targeting multiple Windows Server versions on the same agent node)
707+
- [Difficulties in mixed OS & arch clusters](https://docs.google.com/document/d/12uZt-KSG8v4CSyUDr0EC6btmzpVOZAWzqYDif3EoeBU/edit#heading=h.uno03u1f2t9i) (Discussions around usage in this document)
708+
- Example runtime class used in some Windows PROW jobs - [2004-hyperv-runtimeclass.yaml](https://github.com/kubernetes-sigs/windows-testing/blob/master/helpers/hyper-v-mutating-webhook/2004-hyperv-runtimeclass.yaml)
709+
- [x] No release blocking feedback for API and functionality
710+
715711
## Implementation History
716712

717713
- 2020-10-17: RuntimeClass approved to be promoted as stable
@@ -729,6 +725,11 @@ Beta:
729725

730726
The following ideas may be explored in a future iteration:
731727

728+
- The following monitoring areas will be skipped for now, but may be considered for future:
729+
- how many runtimes does a cluster support?
730+
- how many scheduling failures were caused by unsupported runtimes or insufficient
731+
resources of a certain runtime?
732+
- how many runtimes node supports?
732733
- Surfacing support for optional features by runtimes, and surfacing errors caused by
733734
incompatible features & runtimes earlier.
734735
- Automatic runtime or feature discovery - initially RuntimeClasses are manually defined (by the

0 commit comments

Comments
 (0)