我目前已经使用名称设置了一个 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
容器:
...