119 lines
5.2 KiB
Markdown
119 lines
5.2 KiB
Markdown
---
|
|
title: Feature Gates
|
|
weight: 10
|
|
content_type: concept
|
|
card:
|
|
name: reference
|
|
weight: 60
|
|
---
|
|
|
|
<!-- overview -->
|
|
This page contains an overview of the various feature gates an administrator
|
|
can specify on different Kubernetes components.
|
|
|
|
See [feature stages](#feature-stages) for an explanation of the stages for a feature.
|
|
|
|
|
|
<!-- body -->
|
|
## Overview
|
|
|
|
Feature gates are a set of key=value pairs that describe Kubernetes features.
|
|
You can turn these features on or off using the `--feature-gates` command line flag
|
|
on each Kubernetes component.
|
|
|
|
Each Kubernetes component lets you enable or disable a set of feature gates that
|
|
are relevant to that component.
|
|
Use `-h` flag to see a full set of feature gates for all components.
|
|
To set feature gates for a component, such as kubelet, use the `--feature-gates`
|
|
flag assigned to a list of feature pairs:
|
|
|
|
```shell
|
|
--feature-gates=...,GracefulNodeShutdown=true
|
|
```
|
|
|
|
The following tables are a summary of the feature gates that you can set on
|
|
different Kubernetes components.
|
|
|
|
- The "Since" column contains the Kubernetes release when a feature is introduced
|
|
or its release stage is changed.
|
|
- The "Until" column, if not empty, contains the last Kubernetes release in which
|
|
you can still use a feature gate.
|
|
- If a feature is in the Alpha or Beta state, you can find the feature listed
|
|
in the [Alpha/Beta feature gate table](#feature-gates-for-alpha-or-beta-features).
|
|
- If a feature is stable you can find all stages for that feature listed in the
|
|
[Graduated/Deprecated feature gate table](#feature-gates-for-graduated-or-deprecated-features).
|
|
- The [Graduated/Deprecated feature gate table](#feature-gates-for-graduated-or-deprecated-features)
|
|
also lists deprecated and withdrawn features.
|
|
|
|
{{< note >}}
|
|
For a reference to old feature gates that are removed, please refer to
|
|
[feature gates removed](/docs/reference/command-line-tools-reference/feature-gates-removed/).
|
|
{{< /note >}}
|
|
|
|
<!-- Want to edit this table? See https://k8s.io/docs/contribute/new-content/new-features/#ready-for-review-feature-gates -->
|
|
### Feature gates for Alpha or Beta features
|
|
|
|
{{< feature-gate-table include="alpha,beta" caption="Feature gates for features in Alpha or Beta states" >}}
|
|
|
|
<!-- Want to edit this table? See https://k8s.io/docs/contribute/new-content/new-features/#ready-for-review-feature-gates -->
|
|
### Feature gates for graduated or deprecated features
|
|
|
|
{{< feature-gate-table include="ga,deprecated" caption="Feature Gates for Graduated or Deprecated Features" >}}
|
|
|
|
## Using a feature
|
|
|
|
### Feature stages
|
|
|
|
A feature can be in *Alpha*, *Beta* or *GA* stage.
|
|
An *Alpha* feature means:
|
|
|
|
* Disabled by default.
|
|
* Might be buggy. Enabling the feature may expose bugs.
|
|
* Support for feature may be dropped at any time without notice.
|
|
* The API may change in incompatible ways in a later software release without notice.
|
|
* Recommended for use only in short-lived testing clusters, due to increased
|
|
risk of bugs and lack of long-term support.
|
|
|
|
A *Beta* feature means:
|
|
|
|
* Usually enabled by default. Beta API groups are
|
|
[disabled by default](https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/3136-beta-apis-off-by-default).
|
|
* The feature is well tested. Enabling the feature is considered safe.
|
|
* Support for the overall feature will not be dropped, though details may change.
|
|
* The schema and/or semantics of objects may change in incompatible ways in a
|
|
subsequent beta or stable release. When this happens, we will provide instructions
|
|
for migrating to the next version. This may require deleting, editing, and
|
|
re-creating API objects. The editing process may require some thought.
|
|
This may require downtime for applications that rely on the feature.
|
|
* Recommended for only non-business-critical uses because of potential for
|
|
incompatible changes in subsequent releases. If you have multiple clusters
|
|
that can be upgraded independently, you may be able to relax this restriction.
|
|
|
|
{{< note >}}
|
|
Please do try *Beta* features and give feedback on them!
|
|
After they exit beta, it may not be practical for us to make more changes.
|
|
{{< /note >}}
|
|
|
|
A *General Availability* (GA) feature is also referred to as a *stable* feature. It means:
|
|
|
|
* The feature is always enabled; you cannot disable it.
|
|
* The corresponding feature gate is no longer needed.
|
|
* Stable versions of features will appear in released software for many subsequent versions.
|
|
|
|
## List of feature gates {#feature-gates}
|
|
|
|
Each feature gate is designed for enabling/disabling a specific feature.
|
|
|
|
<!-- Want to edit this list? See https://k8s.io/docs/contribute/new-content/new-features/#ready-for-review-feature-gates -->
|
|
{{< feature-gate-list include="alpha,beta,ga,deprecated" >}}
|
|
|
|
## {{% heading "whatsnext" %}}
|
|
|
|
* The [deprecation policy](/docs/reference/using-api/deprecation-policy/) for Kubernetes explains
|
|
the project's approach to removing features and components.
|
|
* Since Kubernetes 1.24, new beta APIs are not enabled by default. When enabling a beta
|
|
feature, you will also need to enable any associated API resources.
|
|
For example, to enable a particular resource like
|
|
`storage.k8s.io/v1beta1/csistoragecapacities`, set `--runtime-config=storage.k8s.io/v1beta1/csistoragecapacities`.
|
|
See [API Versioning](/docs/reference/using-api/#api-versioning) for more details on the command line flags.
|