@@ -19,7 +19,7 @@ package org.apache.spark.deploy.kubernetes.submit
1919import java .io .File
2020import java .util .Collections
2121
22- import io .fabric8 .kubernetes .api .model .{ContainerBuilder , EnvVarBuilder , OwnerReferenceBuilder , PodBuilder }
22+ import io .fabric8 .kubernetes .api .model .{ContainerBuilder , EnvVarBuilder , OwnerReferenceBuilder , PodBuilder , QuantityBuilder }
2323import io .fabric8 .kubernetes .client .KubernetesClient
2424import scala .collection .JavaConverters ._
2525
@@ -61,6 +61,11 @@ private[spark] class Client(
6161 .getOrElse(kubernetesAppId)
6262 private val driverDockerImage = sparkConf.get(DRIVER_DOCKER_IMAGE )
6363 private val dockerImagePullPolicy = sparkConf.get(DOCKER_IMAGE_PULL_POLICY )
64+
65+ // CPU settings
66+ private val driverCpuCores = sparkConf.getOption(" spark.driver.cores" ).getOrElse(" 1" )
67+
68+ // Memory settings
6469 private val driverMemoryMb = sparkConf.get(org.apache.spark.internal.config.DRIVER_MEMORY )
6570 private val memoryOverheadMb = sparkConf
6671 .get(KUBERNETES_DRIVER_MEMORY_OVERHEAD )
@@ -97,6 +102,15 @@ private[spark] class Client(
97102 .withValue(classPath)
98103 .build()
99104 }
105+ val driverCpuQuantity = new QuantityBuilder (false )
106+ .withAmount(driverCpuCores)
107+ .build()
108+ val driverMemoryQuantity = new QuantityBuilder (false )
109+ .withAmount(s " ${driverMemoryMb}M " )
110+ .build()
111+ val driverMemoryLimitQuantity = new QuantityBuilder (false )
112+ .withAmount(s " ${driverContainerMemoryWithOverhead}M " )
113+ .build()
100114 val driverContainer = new ContainerBuilder ()
101115 .withName(DRIVER_CONTAINER_NAME )
102116 .withImage(driverDockerImage)
@@ -114,6 +128,12 @@ private[spark] class Client(
114128 .withName(ENV_DRIVER_ARGS )
115129 .withValue(appArgs.mkString(" " ))
116130 .endEnv()
131+ .withNewResources()
132+ .addToRequests(" cpu" , driverCpuQuantity)
133+ .addToLimits(" cpu" , driverCpuQuantity)
134+ .addToRequests(" memory" , driverMemoryQuantity)
135+ .addToLimits(" memory" , driverMemoryLimitQuantity)
136+ .endResources()
117137 .build()
118138 val basePod = new PodBuilder ()
119139 .withNewMetadata()
0 commit comments