在实时 Kubernetes 集群中读写持久卷的最佳实践

问题描述

我正在设计一个需要存储音频文件的 Kubernetes 系统。为此,我想设置一个使用有状态集的持久存储卷。

我找到了一些关于如何设置这样的东西的教程,但是一旦我创建了它,我就不确定如何读/写文件。什么是最好的方法来做到这一点。我将使用 Flask 应用程序,但如果我能获得高级方法,那么我可以自己找到确切的库。

解决方法

不承认应该如何以编程方式明智地实现它以及处理音频文件的特定调整,您可以使用 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 PodVolume 的关系。如果您的用例不同,您将需要参考关于 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 集群(如 GKEEKSAKS),请参阅其有关存储选项的文档。

我建议您查看 Persistent Volumes 上的官方文档:

另外,请查看有关 Statefulset 的文档:


其他资源:

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...