Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-41515 PVC-oriented executor pod allocation
  3. SPARK-39965

Skip PVC cleanup when driver doesn't own PVCs

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Resolved
    • Trivial
    • Resolution: Fixed
    • 3.3.0
    • 3.3.1, 3.2.3, 3.4.0
    • Kubernetes
    • None

    Description

      From Spark32 . as a part of https://github.com/apache/spark/pull/32288 , functionality is added to delete PVC if the Spark driver died. 

      https://github.com/apache/spark/blob/786a70e710369b195d7c117b33fe9983044014d6/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/scheduler/cluster/k8s/KubernetesClusterSchedulerBackend.scala#L144

       

      However there are cases , where spark on K8s doesn't use PVC and use host path for storage. 

      https://spark.apache.org/docs/latest/running-on-kubernetes.html#using-kubernetes-volumes

       

      Now  in those cases ,

      • it request to delete PVC (which is not required) .
      • It also tries to delete in the case where driver doesn't own the PV (or spark.kubernetes.driver.ownPersistentVolumeClaim is false) 
      • Moreover in the cluster , where Spark user doesn't have access to list or delete PVC , it throws exception .  

       

      io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://kubernetes.default.svc/api/v1/namespaces/<>/persistentvolumeclaims?labelSelector=spark-app-selector%3Dspark-332bd09284b3442f8a6a214fabcd6ab1. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. persistentvolumeclaims is forbidden: User "system:serviceaccount:dpi-dev:spark" cannot list resource "persistentvolumeclaims" in API group "" in the namespace "<>".

       

      Solution

      Ideally there should be configuration spark.kubernetes.driver.pvc.deleteOnTermination or use spark.kubernetes.driver.ownPersistentVolumeClaim  which should be checked before calling to delete PVC. If user have not set up PV or if the driver doesn't own  then there is no need to call the api and delete PVC . 

       

      Attachments

        Activity

          People

            pralabhkumar Pralabh Kumar
            pralabhkumar Pralabh Kumar
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: