我目前已经使用名称设置了一个 PVC,minio-pvc
并基于带有值的stable/minio 图表创建了一个部署
mode: standalone
replicas: 1
persistence:
enabled: true
existingClaim: minio-pvc
如果我增加副本数量会怎样?如果多个 pod 尝试同时写入 PVC,我是否会冒损坏数据的风险?
我目前已经使用名称设置了一个 PVC,minio-pvc
并基于带有值的stable/minio 图表创建了一个部署
mode: standalone
replicas: 1
persistence:
enabled: true
existingClaim: minio-pvc
如果我增加副本数量会怎样?如果多个 pod 尝试同时写入 PVC,我是否会冒损坏数据的风险?
不要将部署用于有状态的容器。而是使用 StatefulSets。StatefulSets 专为运行有状态的容器(如数据库)而设计。它们用于保持容器的状态。
请注意,每个 pod 都将通过 pvc 绑定一个单独的持久卷。不可能有多个 pod 实例写入同一个 pv。希望我回答了你的问题。
如果您坚持使用 Deployments 而不是 StatefulSets,那么多个副本写入同一个 PVC 是不可行的,因为不能保证不同的副本被安排在同一个节点上,因此您可能有一个挂起的 pod等待建立与卷的连接并失败。解决方案是选择一个特定节点并让所有副本在同一个节点上运行。
运行以下命令并将标签分配给您的一个节点:
kubectl label nodes <node-name> <label-key>=<label-value>
假设我们选择label-key
成为labelKey
和label-value
成为node1
。然后您可以继续将以下内容添加到您的 YAML 文件中,并将 pod 安排在同一节点上:
api版本:应用程序/v1 种类:部署 元数据: 名称:我的应用 标签: 应用程序:我的应用程序 规格: 复制品:3 模板: 规格: 节点选择器: 标签键:节点1 容器: ...