You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by do...@apache.org on 2022/08/19 19:33:59 UTC
[spark] branch branch-3.3 updated: [SPARK-40065][K8S] Mount ConfigMap on executors with non-default profile as well
This is an automated email from the ASF dual-hosted git repository.
dongjoon pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-3.3 by this push:
new 88f8ac6b55e [SPARK-40065][K8S] Mount ConfigMap on executors with non-default profile as well
88f8ac6b55e is described below
commit 88f8ac6b55e9a68161aa275dc379bd8167ef29c1
Author: Aki Sukegawa <ns...@apache.org>
AuthorDate: Fri Aug 19 12:28:48 2022 -0700
[SPARK-40065][K8S] Mount ConfigMap on executors with non-default profile as well
### What changes were proposed in this pull request?
This fixes a bug where ConfigMap is not mounted on executors if they are under a non-default resource profile.
### Why are the changes needed?
When `spark.kubernetes.executor.disableConfigMap` is `false`, expected behavior is that the ConfigMap is mounted regardless of executor's resource profile. However, it is not mounted if the resource profile is non-default.
### Does this PR introduce _any_ user-facing change?
Executors with non-default resource profile will have the ConfigMap mounted that was missing before if `spark.kubernetes.executor.disableConfigMap` is `false` or default. If certain users need to keep that behavior for some reason, they would need to explicitly set `spark.kubernetes.executor.disableConfigMap` to `true`.
### How was this patch tested?
A new test case is added just below the existing ConfigMap test case.
Closes #37504 from nsuke/SPARK-40065.
Authored-by: Aki Sukegawa <ns...@apache.org>
Signed-off-by: Dongjoon Hyun <do...@apache.org>
(cherry picked from commit 41ca6299eff4155aa3ac28656fe96501a7573fb0)
Signed-off-by: Dongjoon Hyun <do...@apache.org>
---
.../k8s/features/BasicExecutorFeatureStep.scala | 2 +-
.../features/BasicExecutorFeatureStepSuite.scala | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStep.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStep.scala
index 8102ca84aff..171b368e35d 100644
--- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStep.scala
+++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStep.scala
@@ -246,7 +246,7 @@ private[spark] class BasicExecutorFeatureStep(
.build()
}.getOrElse(executorContainerWithConfVolume)
} else {
- executorContainer
+ executorContainerWithConfVolume
}
val containerWithLifecycle =
if (!kubernetesConf.workerDecommissioning) {
diff --git a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStepSuite.scala b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStepSuite.scala
index 84c4f3b8ba3..4d57440c2c6 100644
--- a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStepSuite.scala
+++ b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicExecutorFeatureStepSuite.scala
@@ -372,6 +372,27 @@ class BasicExecutorFeatureStepSuite extends SparkFunSuite with BeforeAndAfter {
assert(!SecretVolumeUtils.podHasVolume(podConfigured.pod, SPARK_CONF_VOLUME_EXEC))
}
+ test("SPARK-40065 Mount configmap on executors with non-default profile as well") {
+ val baseDriverPod = SparkPod.initialPod()
+ val rp = new ResourceProfileBuilder().build()
+ val step = new BasicExecutorFeatureStep(newExecutorConf(), new SecurityManager(baseConf), rp)
+ val podConfigured = step.configurePod(baseDriverPod)
+ assert(SecretVolumeUtils.containerHasVolume(podConfigured.container,
+ SPARK_CONF_VOLUME_EXEC, SPARK_CONF_DIR_INTERNAL))
+ assert(SecretVolumeUtils.podHasVolume(podConfigured.pod, SPARK_CONF_VOLUME_EXEC))
+ }
+
+ test("SPARK-40065 Disable configmap volume on executor pod's container (non-default profile)") {
+ baseConf.set(KUBERNETES_EXECUTOR_DISABLE_CONFIGMAP, true)
+ val baseDriverPod = SparkPod.initialPod()
+ val rp = new ResourceProfileBuilder().build()
+ val step = new BasicExecutorFeatureStep(newExecutorConf(), new SecurityManager(baseConf), rp)
+ val podConfigured = step.configurePod(baseDriverPod)
+ assert(!SecretVolumeUtils.containerHasVolume(podConfigured.container,
+ SPARK_CONF_VOLUME_EXEC, SPARK_CONF_DIR_INTERNAL))
+ assert(!SecretVolumeUtils.podHasVolume(podConfigured.pod, SPARK_CONF_VOLUME_EXEC))
+ }
+
test("SPARK-35482: user correct block manager port for executor pods") {
try {
val initPod = SparkPod.initialPod()
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org