private static StatefulSet buildMasterStatefulSet()

in spark-submission-worker/src/main/java/org/apache/spark/k8s/operator/SparkClusterResourceSpec.java [163:226]


  private static StatefulSet buildMasterStatefulSet(
      String scheduler,
      String name,
      String namespace,
      String version,
      String image,
      String options,
      ObjectMeta objectMeta,
      StatefulSetSpec statefulSetSpec) {
    var partialStatefulSet =
        new StatefulSetBuilder()
            .withNewMetadataLike(objectMeta)
            .withName(name + "-master")
            .addToLabels(LABEL_SPARK_ROLE_NAME, LABEL_SPARK_ROLE_MASTER_VALUE)
            .addToLabels(LABEL_SPARK_VERSION_NAME, version)
            .withNamespace(namespace)
            .endMetadata()
            .withNewSpecLike(statefulSetSpec)
            .withPodManagementPolicy("Parallel")
            .withReplicas(1)
            .editOrNewSelector()
            .addToMatchLabels(LABEL_SPARK_ROLE_NAME, LABEL_SPARK_ROLE_MASTER_VALUE)
            .endSelector()
            .editOrNewTemplate()
            .editOrNewMetadata()
            .addToLabels(LABEL_SPARK_ROLE_NAME, LABEL_SPARK_ROLE_MASTER_VALUE)
            .addToLabels(LABEL_SPARK_VERSION_NAME, version)
            .endMetadata()
            .editOrNewSpec()
            .withSchedulerName(scheduler)
            .withTerminationGracePeriodSeconds(0L);
    if (!partialStatefulSet.hasMatchingContainer(p -> "master".equals(p.getName()))) {
      partialStatefulSet = partialStatefulSet.addNewContainer().withName("master").endContainer();
    }
    return partialStatefulSet
        .editMatchingContainer(p -> "master".equals(p.getName()))
        .withImage(image)
        .addNewEnv()
        .withName("SPARK_MASTER_OPTS")
        .withValue(options)
        .endEnv()
        .addToCommand("bash")
        .addToArgs(
            "-c",
            "/opt/spark/sbin/start-master.sh && while /opt/spark/sbin/spark-daemon.sh status "
                + "org.apache.spark.deploy.master.Master 1; do sleep 1; done")
        .addNewPort()
        .withName("web")
        .withContainerPort(8080)
        .endPort()
        .addNewPort()
        .withName("spark")
        .withContainerPort(7070)
        .endPort()
        .addNewPort()
        .withName("rest")
        .withContainerPort(6066)
        .endPort()
        .endContainer()
        .endSpec()
        .endTemplate()
        .endSpec()
        .build();
  }