我目前已经建立了一个名称为minio-pvc
的PVC,并基于带有值的stable/minio chart创建了一个部署
mode: standalone
replicas: 1
persistence:
enabled: true
existingClaim: minio-pvc
如果我增加副本数会怎样?如果有多个Pod试图同时写入PVC,我是否会有破坏数据的风险?
答案 0 :(得分:0)
如果您坚持使用Deployments而不是StatefulSets,则多个副本无法写入同一PVC将是不可行的,因为不能保证不同的副本在同一节点上调度,因此您可能拥有等待建立到该卷的连接的挂起的Pod失败。解决方案是选择一个特定的节点,并使所有副本在同一节点上运行。
运行以下命令,并为您的节点之一分配标签:
kubectl label nodes <node-name> <label-key>=<label-value>
假设我们选择label-key
为labelKey
和label-value
为node1
。然后,您可以继续以下操作,并将以下内容添加到您的YAML文件中,并将Pod安排在同一节点上:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: app: my-app spec: replicas: 3 template: spec: nodeSelector: labelKey: node1 containers: ...
答案 1 :(得分:0)
不要将部署用于有状态的容器。而是使用StatefulSets。 StatefulSet是专门为运行有状态容器(如数据库)而设计的。它们用于保持容器的状态。
请注意,每个Pod将通过pvc绑定一个单独的持久卷。不可能有多个Pod实例写入同一PV。希望我回答了你的问题。