--- title: Feature Gates weight: 10 content_type: concept card: name: reference weight: 60 --- 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. ## 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 >}} ### Feature gates for Alpha or Beta features {{< feature-gate-table include="alpha,beta" caption="Feature gates for features in Alpha or Beta states" >}} ### 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. {{< 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.