From c379f1bdee4ac8363921b737a15d03e2c218c508 Mon Sep 17 00:00:00 2001 From: Cheng Pan Date: Wed, 12 Oct 2022 11:30:27 +0800 Subject: [PATCH] [SPARK-41667][K8S] Expose env var SPARK_DRIVER_POD_NAME in Driver Pod --- .../main/scala/org/apache/spark/deploy/k8s/Constants.scala | 1 + .../spark/deploy/k8s/features/BasicDriverFeatureStep.scala | 6 ++++++ .../deploy/k8s/features/BasicDriverFeatureStepSuite.scala | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Constants.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Constants.scala index 9da11047b314b..3dfc3f2fe20fa 100644 --- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Constants.scala +++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/Constants.scala @@ -64,6 +64,7 @@ private[spark] object Constants { val ENV_EXECUTOR_POD_NAME = "SPARK_EXECUTOR_POD_NAME" val ENV_JAVA_OPT_PREFIX = "SPARK_JAVA_OPT_" val ENV_CLASSPATH = "SPARK_CLASSPATH" + val ENV_DRIVER_POD_NAME = "SPARK_DRIVER_POD_NAME" val ENV_DRIVER_BIND_ADDRESS = "SPARK_DRIVER_BIND_ADDRESS" val ENV_SPARK_CONF_DIR = "SPARK_CONF_DIR" val ENV_SPARK_USER = "SPARK_USER" diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStep.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStep.scala index 4b5eece54c8c5..53014722cac27 100644 --- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStep.scala +++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStep.scala @@ -130,6 +130,12 @@ private[spark] class BasicDriverFeatureStep(conf: KubernetesDriverConf) .withNewFieldRef("v1", "status.podIP") .build()) .endEnv() + .addNewEnv() + .withName(ENV_DRIVER_POD_NAME) + .withValueFrom(new EnvVarSourceBuilder() + .withNewFieldRef("v1", "metadata.name") + .build()) + .endEnv() .editOrNewResources() .addToRequests("cpu", driverCpuQuantity) .addToLimits(maybeCpuLimitQuantity.toMap.asJava) diff --git a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStepSuite.scala b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStepSuite.scala index 9a3b06af7f0b9..434f793e0b52e 100644 --- a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStepSuite.scala +++ b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/BasicDriverFeatureStepSuite.scala @@ -105,6 +105,11 @@ class BasicDriverFeatureStepSuite extends SparkFunSuite { envVar.getValueFrom.getFieldRef.getApiVersion.equals("v1") && envVar.getValueFrom.getFieldRef.getFieldPath.equals("status.podIP"))) + assert(configuredPod.container.getEnv.asScala.exists(envVar => + envVar.getName.equals(ENV_DRIVER_POD_NAME) && + envVar.getValueFrom.getFieldRef.getApiVersion.equals("v1") && + envVar.getValueFrom.getFieldRef.getFieldPath.equals("metadata.name"))) + val resourceRequirements = configuredPod.container.getResources val requests = resourceRequirements.getRequests.asScala assert(amountAndFormat(requests("cpu")) === "2")