Packages

t

org.apache.spark.deploy.k8s.features

KubernetesDriverCustomFeatureConfigStep

trait KubernetesDriverCustomFeatureConfigStep extends KubernetesFeatureConfigStep

:: DeveloperApi ::

A base interface to help user extend custom feature step in driver side. Note: If your custom feature step would be used only in driver or both in driver and executor, please use this.

Example of driver feature step:

class DriverExampleFeatureStep extends KubernetesDriverCustomFeatureConfigStep {
  private var driverConf: KubernetesDriverConf = _

  override def init(conf: KubernetesDriverConf): Unit = {
    driverConf = conf
  }

  // Implements methods of `KubernetesFeatureConfigStep`, such as `configurePod`
  override def configurePod(pod: SparkPod): SparkPod = {
    // Apply modifications on the given pod in accordance to this feature.
  }
}

Example of feature step for both driver and executor:

class DriverAndExecutorExampleFeatureStep extends KubernetesDriverCustomFeatureConfigStep
  with KubernetesExecutorCustomFeatureConfigStep {
  private var kubernetesConf: KubernetesConf = _

  override def init(conf: KubernetesDriverConf): Unit = {
    kubernetesConf = conf
  }

  override def init(conf: KubernetesExecutorConf): Unit = {
    kubernetesConf = conf
  }

  // Implements methods of `KubernetesFeatureConfigStep`, such as `configurePod`
  override def configurePod(pod: SparkPod): SparkPod = {
    // Apply modifications on the given pod in accordance to this feature.
  }
}
Annotations
@Unstable() @DeveloperApi()
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. KubernetesDriverCustomFeatureConfigStep
  2. KubernetesFeatureConfigStep
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def configurePod(pod: SparkPod): SparkPod

    Apply modifications on the given pod in accordance to this feature.

    Apply modifications on the given pod in accordance to this feature. This can include attaching volumes, adding environment variables, and adding labels/annotations.

    Note that we should return a SparkPod that keeps all of the properties of the passed SparkPod object. So this is correct:

    val configuredPod = new PodBuilder(pod.pod)
        .editSpec()
        ...
        .build()
      val configuredContainer = new ContainerBuilder(pod.container)
        ...
        .build()
      SparkPod(configuredPod, configuredContainer)
     
    
    This is incorrect:
    val configuredPod = new PodBuilder() // Loses the original state
        .editSpec()
        ...
        .build()
      val configuredContainer = new ContainerBuilder() // Loses the original state
        ...
        .build()
      SparkPod(configuredPod, configuredContainer)
     
    

    Definition Classes
    KubernetesFeatureConfigStep
  2. abstract def init(config: KubernetesDriverConf): Unit

    Initialize the configuration for driver user feature step, this only applicable when user specified spark.kubernetes.driver.pod.featureSteps, the init will be called after feature step loading.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  9. def getAdditionalKubernetesResources(): Seq[HasMetadata]

    Return any additional Kubernetes resources that should be added to support this feature.

    Return any additional Kubernetes resources that should be added to support this feature. Only applicable when creating the driver in cluster mode. Resources would be setup/refresh after Pod creation.

    Definition Classes
    KubernetesFeatureConfigStep
  10. def getAdditionalPodSystemProperties(): Map[String, String]

    Return any system properties that should be set on the JVM in accordance to this feature.

    Return any system properties that should be set on the JVM in accordance to this feature.

    Definition Classes
    KubernetesFeatureConfigStep
  11. def getAdditionalPreKubernetesResources(): Seq[HasMetadata]

    Return any additional Kubernetes resources that should be added to support this feature.

    Return any additional Kubernetes resources that should be added to support this feature. Only applicable when creating the driver in cluster mode. Resources would be setup/refresh before Pod creation.

    Definition Classes
    KubernetesFeatureConfigStep
  12. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  14. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  17. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  18. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  19. def toString(): String
    Definition Classes
    AnyRef → Any
  20. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  21. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  22. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from AnyRef

Inherited from Any

Ungrouped