我在Google Kubernetes Engine中运行的Kubernetes中有一堆标准PV绑定到PVC。我想将它们的存储类更改为SSD。如何实现?
g6baxovj1#
不可以,无法更改现有PVC的存储类。您必须使用所需的存储类创建一个新PVC,然后删除现有PVC。
h4cxqtbf2#
如果我没有理解错的话,你想改变你的PV的类型,问题不是“如果”,而是“在哪里”。PVC、PV和PVC Class之间的关系非常简单。PVC只是对特定类型(在storageClassName下指定)和大小(在PV中列出)的存储的请求。
storageClassName
kind: PersistentVolumeClaim spec: ... resources: requests: storage: 8Gi storageClassName: slow
字符串PV在spec:中有storageClassName。
spec:
kind: PersistentVolume ... spec: capacity: storage: 10Gi ... storageClassName: slow
型storageClass有type。
storageClass
type
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: slow provisioner: kubernetes.io/gce-pd parameters: type: pd-standard fstype: ext4 replication-type: none # type: pd-standard or pd-ssd. Default: pd-standard
型这是你一直在找的信息吗
von4xj4u3#
如前所述,您不能只更改存储类名称,但可以使用相同的内容和(至关重要的是)相同的驱动器名称重新配置新驱动器。有两种方法:1.创建一个全新的deployment/statefulset,然后将其标记为蓝色/绿色或重新指向流量。根据您当前的基础设施,这可能会导致中断。特别是如果您需要在迁移过程中保持数据同步,这可能会非常痛苦。1.重新创建现有的PV/PVC。这在某些方面更整洁,更容易,但它也肯定会导致停电。关于2,高级步骤是:
你可以在这里找到更详细的说明:https://blog.srcinnovations.com.au/2023/11/23/changing-kubernetes-pvc-storage-class-and-downsizing-them-at-the-same-time/
3条答案
按热度按时间g6baxovj1#
不可以,无法更改现有PVC的存储类。您必须使用所需的存储类创建一个新PVC,然后删除现有PVC。
h4cxqtbf2#
如果我没有理解错的话,你想改变你的PV的类型,问题不是“如果”,而是“在哪里”。
PVC、PV和PVC Class之间的关系非常简单。
PVC只是对特定类型(在
storageClassName
下指定)和大小(在PV中列出)的存储的请求。字符串
PV在
spec:
中有storageClassName
。型
storageClass
有type
。型
这是你一直在找的信息吗
von4xj4u3#
如前所述,您不能只更改存储类名称,但可以使用相同的内容和(至关重要的是)相同的驱动器名称重新配置新驱动器。有两种方法:
1.创建一个全新的deployment/statefulset,然后将其标记为蓝色/绿色或重新指向流量。根据您当前的基础设施,这可能会导致中断。特别是如果您需要在迁移过程中保持数据同步,这可能会非常痛苦。
1.重新创建现有的PV/PVC。这在某些方面更整洁,更容易,但它也肯定会导致停电。
关于2,高级步骤是:
如果您正在使用动态卷模板的有状态集,则需要删除整个有状态集并重新应用它,因为有状态集规范的动态卷模板部分是不可变的。
你可以在这里找到更详细的说明:https://blog.srcinnovations.com.au/2023/11/23/changing-kubernetes-pvc-storage-class-and-downsizing-them-at-the-same-time/