在现有Kubernetes集群上创建“hostPath”卷

bvjxkvbb  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(1)|浏览(148)

我正在Kubernetes上创建一个spark集群,并遵循官方文档:https://spark.apache.org/docs/latest/running-on-kubernetes.html#using-kubernetes-volumes
如上所述,链接hostPath是Kubernetes上Spark集群支持的卷挂载类型之一。
我已经使用kubeadm init命令创建了一个集群,并使用spark-submit工具提交了一个spark作业,该作业可按需创建驱动程序和执行器pod。
我需要从这个Spark应用程序中读取一些大文件,在这个概念验证阶段,hostPath似乎是在集群上挂载这些文件的唯一现实选择。
如何在没有yaml部署文件的情况下在Kubernetes集群上创建hostPath卷?因为我使用的是spark-submit命令,所以我没有yaml配置文件。
尝试创建类型为hostPath的yaml文件是无效选项。
是否有任何其他方法使用kubectl创建一个hostPath卷或任何其他选项与yaml配置文件?

1bqhqjot

1bqhqjot1#

正如@david-maze提到的,hostPath很少是pod的好选择,因为我们不应该总是将它们调度到同一个节点。
但是,如果是在本地Kubernetes集群上进行测试,则Here is a doc描述了如何创建hostPath PV以及如何使用PVC将其挂载到您的Spark Pod中。
基本上,这里是PV yaml

apiVersion: v1

kind: PersistentVolume

metadata:

  name: task-pv-volume

  labels:

    type: local

spec:

  storageClassName: manual

  capacity:

    storage: 10Gi

  accessModes:

    - ReadWriteOnce

  hostPath:

    path: "/mnt/data"

然后

kubectl apply -f /path/to/pv-volume.yaml

这里是PVC yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: task-pv-claim

spec:

  storageClassName: manual

  accessModes:

    - ReadWriteOnce

  resources:

    requests:

      storage: 10Gi

然后

kubectl apply -f /path/to/pv-claim.yaml

然后,使用部署资源中的pvc或使用pod清单

apiVersion: v1

kind: Pod

metadata:

  name: spark-worker

spec:

  volumes:

    - name: task-pv-storage

      persistentVolumeClaim:

        claimName: task-pv-claim

  containers:

    - name: spark-worker

      image: spark-hadoop:3.2.0

      command: ["/spark-worker"]

      ports:

        - containerPort: 8081

      volumeMounts:

        - mountPath: "/usr/share/nginx/html"

          name: task-pv-storage

相关问题