我正在设计一个需要存储音频文件的 Kubernetes 系统。为此,我想设置一个使用有状态集的持久存储卷。
我找到了一些关于如何设置这样的东西的教程,但是一旦我创建了它,我就不确定如何读/写文件。什么是最好的方法来做到这一点。我将使用 Flask 应用程序,但如果我能获得高级方法,那么我可以自己找到确切的库。
答案 0 :(得分:1)
不承认应该如何以编程方式明智地实现它以及处理音频文件的特定调整,您可以使用 Persistent Volume
与将数据读/写到目录相同(如正确指出的那样)评论中的用户@zerkms)。
回答问题的这一特定部分:
<块引用>但我不确定一旦创建它如何读/写文件。
假设您已通过以下方式创建了您的 StatefulSet
:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: ubuntu-sts
spec:
selector:
matchLabels:
app: ubuntu # has to match .spec.template.metadata.labels
serviceName: "ubuntu"
replicas: 1
template:
metadata:
labels:
app: ubuntu
spec:
terminationGracePeriodSeconds: 10
containers:
- name: ubuntu
image: ubuntu
command:
- sleep
- "infinity"
volumeMounts:
- name: audio-volume
mountPath: /audio
volumeClaimTemplates:
- metadata:
name: audio-volume
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
resources:
requests:
storage: 1Gi
看看下面的部分(它显示了您的 Volume
的安装位置):
volumeMounts:
- name: audio-volume
mountPath: /audio # <-- HERE!
<块引用>
免责声明!
此示例具有 1:1 Pod
到 Volume
的关系。如果您的用例不同,您将需要参考关于 accessModes
的 Kubernetes 文档。
您可以exec
进入此Pod
以了解如何进一步开发您的应用程序:
$ kubectl exec -it ubuntu-sts-0 -- /bin/bash
$ echo "Hello from your /audio directory!" > /audio/hello.txt
$ cat /audio/hello.txt
root@ubuntu-sts-0:/# cat /audio/hello.txt
Hello from your /audio directory!
附注!
如果您使用云提供商管理的 Kubernetes 集群(如 GKE
、EKS
或 AKS
),请参阅其有关存储选项的文档。
我建议您查看 Persistent Volumes
上的官方文档:
另外,请查看有关 Statefulset
的文档:
其他资源: