我可以使用容器文件系统并避免使用 Kubernetes 卷吗?

Can I use container filesystem and avoid using Kubernetes volume?

我有一个 PHP 容器,我从 S3 存储桶中获取我的媒体,但在本地调整它们的大小,然后容器从本地使用它们。我不关心持久性或容器之间的共享,但有相当多的 I/O。我需要一个 emptydir 卷还是我可以只在容器内创建文件......基本上我问的是除了添加持久性和可共享性之外,卷是否可以做任何事情。

Persistent Volume 是一种让数据持久化的方法,即使容器被丢弃,例如终止并被新版本取代。

EmptyDir 卷可能适合您,在某些配置中它使用 Pod 的内存而不是磁盘。

你怎么选择,看你的要求。

通常,在容器文件系统内工作会比本地主机卷慢,因为在容器内您必须处理覆盖文件系统开销。

Use volumes for write-heavy workloads: Volumes provide the best and most predictable performance for write-heavy workloads. This is because they bypass the storage driver and do not incur any of the potential overheads introduced by thin provisioning and copy-on-write. Volumes have other benefits, such as allowing you to share data among containers and persisting your data even if no running container is using them.
https://docs.docker.com/storage/storagedriver/overlayfs-driver/#performance-best-practices.

在实践中,当然,这可能取决于 a) 您的工作负载,b) 支持您的卷的确切存储(它实际上是本地磁盘还是某个网络驱动器?速度有多快?) .

另请注意,覆盖文件系统可能不支持某些文件操作。
说,overlay2 实际上不支持重命名目录。
https://docs.docker.com/storage/storagedriver/overlayfs-driver/#modifying-files-or-directories.

因此,一般建议是坚持使用某种本地卷。