gpt4 book ai didi

Kubernetes 多个 pvc 与每个 pod 的 statefulset 与所有 pod 的单个 pvc?

转载 作者:行者123 更新时间:2023-12-02 11:54:01 27 4
gpt4 key购买 nike

我已经为 mysql 部署了带有状态 pod 的 kubernetes 集群。对于每个 pod,我有不同的 PVC。

例如:如果 3 个 pod thn 3 个 5GB EBS PVC

SO 对所有 pod 使用一个 PVC 还是对每个 pod 使用不同的 pvc 哪种方法更好。

最佳答案

StatefulSet 必须使用 volumeClaimTemplates 如果你想为一个集合的每个 pod 提供专用存储。基于该模板,为每个 pod 创建 PersistentVolumeClaim 并将卷配置为绑定(bind)到该声明。生成的 PersistentVolumeClaims 名称由 volumeClaimTemplate 名称 + pod-name + 序号组成。因此,如果您将 volumeClaimTemplate 部分添加到您的 StatefulSet YAML(并删除特定的 persistentVolumeClaim 引用),smth 就像这样:

volumeClaimTemplates:
- metadata:
name: mysql-data
spec:
resources:
requests:
storage: 10Gi
accessModes:
- ReadWriteOnce

然后去创建你的 StatefulSet,然后检查它的一个 pod(kubectl get pods pod-name-0 yaml)你会看到类似的东西(输出的卷部分):

volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql-data-pod-name-0. | dynamically created claim based on the template

因此,通过使用 volumeClaimTemplates,您不需要自己创建单独的 PVC,然后在每个单独的 StatefulSet 中引用该 PVC 以特定的 mountPath 挂载到您的容器中(请记住,一个集合的每个 pod 必须引用不同的 PVC , 1PVC-1PV) :Statefulset YAML 的“容器”定义的一部分:

volumeMounts:
- name: mysql-data || references your PVC by -name(not PVC name itself)
mountPath: /var/lib/mysql

因此,旨在让集合中的每个 pod 都有专用存储而不使用 volumeClaimTemplates 会导致很多问题以及管理和扩展它的复杂性。

关于Kubernetes 多个 pvc 与每个 pod 的 statefulset 与所有 pod 的单个 pvc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53927587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com