据这位官员介绍document https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes、Kubernetes持久卷支持三种类型的访问模式。
- 只读很多
- 读写一次
- 读写很多
文档中给出的它们的定义非常高级。如果有人可以更详细地解释它们以及我们应该使用其中一种与另一种不同用例的一些示例,那就太好了。
你应该使用ReadWriteX
当您计划拥有需要的 Pod 时write到音量,而不仅仅是read来自卷的数据。
你应该使用XMany
当您希望 Pod 能够访问给定卷,而这些工作负载在 Kubernetes 集群中的不同节点上运行时。这些 Pod 可能是属于一个 Deployment 的多个副本,也可能是完全不同的 Pod。在很多情况下,希望 Pod 在不同的节点上运行,例如,如果单个 Deployment 有多个 Pod 副本,那么让它们在不同的节点上运行可以帮助确保一定程度的持续可用性,即使其中一个节点发生故障也是如此或正在更新中。
如果你不使用XMany
,但是您确实有多个需要访问给定卷的 Pod,这将迫使 Kubernetes 安排所有这些 Pod 在卷首先安装到的任何节点上运行,如果此类 pod 太多,这可能会导致该节点过载,并且可能会影响其 Pod 需要访问该卷的 Deployment 的可用性,如上一段所述。
所以把所有这些放在一起:
- 如果您需要写入该卷,并且您可能有多个 Pod 需要写入该卷,并且您希望这些 Pod 能够灵活地调度到不同的节点,并且
ReadWriteMany
是给定 K8s 集群卷插件的一个选项,请使用ReadWriteMany
.
- 如果您需要写入该卷,但您不要求多个 pod 能够写入该卷,或者
ReadWriteMany
根本不适合您,请使用ReadWriteOnce
.
- 如果您只需要从卷中读取数据,并且可能有多个 Pod 需要从卷中读取数据,并且您希望将这些 Pod 灵活地调度到不同的节点,并且
ReadOnlyMany
是给定 K8s 集群卷插件的一个选项,请使用ReadOnlyMany
.
- 如果您只需要从卷中读取数据,但您不要求多个 Pod 能够从中读取数据,或者
ReadOnlyMany
根本不适合您,请使用ReadWriteOnce
。在这种情况下,您希望卷是只读的,但卷插件的限制迫使您选择ReadWriteOnce
(没有ReadOnlyOnce
选项)。作为一个好的做法,请考虑containers.volumeMounts.readOnly
设置为true
在 Pod 规范中,了解与只读卷相对应的卷挂载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)