首页 > 解决方案 > Kubernetes 在 ReadWriteOnce 访问模式下使用 PersistentVolumeClaim 升级 Pod

问题描述

我有使用 PersistentVolumeClaim 作为数据库存储的 postgres pod,模式为 ReadWriteOnce。

使用 Helm 升级 pod 很棘手,因为在旧 pod 释放声明之前,新 pod 会被阻止,并且在新 pod 准备好之前,Helm 不会删除旧 pod。

通常如何处理这个问题?我似乎在任何地方都找不到关于此的文档,我认为这是一个常见问题。

这是我的PVC:

apiVersion: v1                                                                  
kind: PersistentVolumeClaim                                                     
metadata:                                                                       
    name: pgdata-claim                                                          
spec:                                                                           
    accessModes:                                                                
        - ReadWriteOnce                                                         
    storageClassName: standard                                                  
    resources:                                                                  
        requests:                                                               
            storage: 20Gi                                                       
    selector:                                                                   
        matchLabels:                                                            
            app: postgres                                                       

标签: kuberneteskubernetes-helm

解决方案


如果您使用ReadWriteOnce 模式,我的建议是使用“ StatefulSet ”和“ volumeClaimTemplates ”,它已成功测试(但没有 helm)。

作为一个例子,请看一下:

https://kubernetes.io/blog/2019/04/04/kubernetes-1.14-local-persistent-volumes-ga/

请分享结果和你的发现。


推荐阅读