diff --git a/docs/running-on-kubernetes.md b/docs/running-on-kubernetes.md
index 46efb479a2fe3..c1d50f3ecfb3e 100644
--- a/docs/running-on-kubernetes.md
+++ b/docs/running-on-kubernetes.md
@@ -1611,7 +1611,7 @@ See the [configuration page](configuration.html) for information on Spark config
(none) |
Class names of an extra driver pod feature step implementing
- `KubernetesFeatureConfigStep`. This is a developer API. Comma separated.
+ `KubernetesFeatureConfigStep`. This is a stable developer API. Comma separated.
Runs after all of Spark internal feature steps. Since 3.3.0, your driver feature step
can implement `KubernetesDriverCustomFeatureConfigStep` where the driver config
is also available.
@@ -1632,7 +1632,7 @@ See the [configuration page](configuration.html) for information on Spark config
| (none) |
Class names of an extra executor pod feature step implementing
- `KubernetesFeatureConfigStep`. This is a developer API. Comma separated.
+ `KubernetesFeatureConfigStep`. This is a stable developer API. Comma separated.
Runs after all of Spark internal feature steps. Since 3.3.0, your executor feature step
can implement `KubernetesExecutorCustomFeatureConfigStep` where the executor config
is also available.
diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesDriverCustomFeatureConfigStep.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesDriverCustomFeatureConfigStep.scala
index 0edd94d3370ab..84392f897ae30 100644
--- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesDriverCustomFeatureConfigStep.scala
+++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesDriverCustomFeatureConfigStep.scala
@@ -16,7 +16,7 @@
*/
package org.apache.spark.deploy.k8s.features
-import org.apache.spark.annotation.{DeveloperApi, Unstable}
+import org.apache.spark.annotation.{DeveloperApi, Since, Stable}
import org.apache.spark.deploy.k8s.KubernetesDriverConf
/**
@@ -65,8 +65,9 @@ import org.apache.spark.deploy.k8s.KubernetesDriverConf
* }
* }}}
*/
-@Unstable
+@Stable
@DeveloperApi
+@Since("3.3.0")
trait KubernetesDriverCustomFeatureConfigStep extends KubernetesFeatureConfigStep {
/**
* Initialize the configuration for driver user feature step, this only applicable when user
diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesExecutorCustomFeatureConfigStep.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesExecutorCustomFeatureConfigStep.scala
index dfb1c768c990e..6a1505ce78133 100644
--- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesExecutorCustomFeatureConfigStep.scala
+++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesExecutorCustomFeatureConfigStep.scala
@@ -16,7 +16,7 @@
*/
package org.apache.spark.deploy.k8s.features
-import org.apache.spark.annotation.{DeveloperApi, Unstable}
+import org.apache.spark.annotation.{DeveloperApi, Since, Stable}
import org.apache.spark.deploy.k8s.KubernetesExecutorConf
/**
@@ -65,8 +65,9 @@ import org.apache.spark.deploy.k8s.KubernetesExecutorConf
* }
* }}}
*/
-@Unstable
+@Stable
@DeveloperApi
+@Since("3.3.0")
trait KubernetesExecutorCustomFeatureConfigStep extends KubernetesFeatureConfigStep {
/**
* Initialize the configuration for executor user feature step, this only applicable when user
diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesFeatureConfigStep.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesFeatureConfigStep.scala
index fcb789f4ae7f4..1f5776dd26dc8 100644
--- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesFeatureConfigStep.scala
+++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/KubernetesFeatureConfigStep.scala
@@ -18,7 +18,7 @@ package org.apache.spark.deploy.k8s.features
import io.fabric8.kubernetes.api.model.HasMetadata
-import org.apache.spark.annotation.{DeveloperApi, Unstable}
+import org.apache.spark.annotation.{DeveloperApi, Since, Stable}
import org.apache.spark.deploy.k8s.SparkPod
/**
@@ -27,8 +27,9 @@ import org.apache.spark.deploy.k8s.SparkPod
* A collection of functions that together represent a "feature" in pods that are launched for
* Spark drivers and executors.
*/
-@Unstable
+@Stable
@DeveloperApi
+@Since("3.3.0")
trait KubernetesFeatureConfigStep {
/**
|