在实时 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
:
的文档
其他资源:
我正在设计一个需要存储音频文件的 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
toVolume
relation. If your use case is different you will need to refer to the Kubernetes documentation aboutaccessModes
.
您可以 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
orAKS
, please refer to it's documentation about storage options.
我鼓励您查看 Persistent Volumes
上的官方文档:
此外,请查看有关 Statefulset
:
其他资源: