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

Best practice on reading and writing to a persistent Volume in a live Kubernetes Cluster

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

我找到了一些关于如何设置类似内容的教程,但我不确定一旦我创建了它如何 read/write 文件。执行此操作的最佳方法是什么。我将使用烧瓶应用程序,但如果我能获得高级方法,那么我可以自己找到确切的库。

不承认事实应该如何明智地实现编程以及处理音频文件的具体调整,您可以像使用 read/write 数据一样使用您的 Persistent Volume 目录(正如用户@zerkms 在评论中正确指出的那样。

回答问题的这个特定部分:

but I am unsure once I have created it how to read/write the files.

假设您已经按照以下方式创建了 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!

Disclaimer!

This example is having the 1:1 Pod to Volume relation. If your use case is different you will need to refer to the Kubernetes documentation about accessModes.

您可以 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!

A side note!

If it happens that you are using the cloud-provider managed Kubernetes cluster like GKE, EKS or AKS, please refer to it's documentation about storage options.

我鼓励您查看 Persistent Volumes 上的官方文档:

此外,请查看有关 Statefulset:

的文档

其他资源: