【问题标题】:Connecting to persistent volume in Kubernetes?连接到 Kubernetes 中的持久卷?
【发布时间】:2018-10-15 07:53:17
【问题描述】:

我正在将堆栈转换为 k8s。数据库需要持久存储。

我用过kubectl create -f pv.yaml

pv.yaml (根据@whites11 的回答进行编辑):

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/nfs"
  claimRef:
    kind: PersistentVolumeClaim
    namespace: default
    name: mongo-persisted-storage

然后我创建一个example mongo replica set。

当我查看我的 k8s 仪表板时,我看到了错误:

PersistentVolumeClaim 未绑定:“mongo-persistent-storage-mongo-0” (重复2次)

在持久卷选项卡中,我看到了看起来不错的卷:

我无法确定下一步以使音量声明成功发生。

编辑#2

我进入 GUI 上的 PVC 页面并手动向声明中添加了一个卷(基于来自 @whites11 的反馈)。我可以看到 PVC 已随卷更新,但仍处于挂起状态。

编辑#3

意识到自从做出@whites11 建议的更改后,pod 中的原始错误消息已更改。现在是“找不到持久卷“pvvolume”(重复2次)”,我想我只需要弄清楚我在哪里写了pvvolume,而不是pv-volume。 (或者它可能是 - 在某处被自动解析出来?

【问题讨论】:

    标签: kubernetes kubernetes-pvc


    【解决方案1】:

    您需要手动将 PV 绑定到 PVC,方法是在 PV 规范中添加适当的 claimRef 部分。

    在实践中,用你喜欢的方法编辑你的 PV,并添加一个类似的部分:

    claimRef:
      name: mongo-persisted-storag
      namespace: <your PVC namespace>
    

    然后,您需要编辑 PVC 以绑定正确的卷,方法是在其 spec 部分添加以下内容:

    volumeName: "<your volume name>"
    

    这里解释了这个过程是如何工作的:https://docs.openshift.org/latest/dev_guide/persistent_volumes.html#persistent-volumes-volumes-and-claim-prebinding

    【讨论】:

    • 谢谢,我假设如果我不使用命名空间,PV 和服务都将使用默认命名空间?
    • PV 没有命名空间,不指定服务会默认开启
    • 抱歉,我仍然无法解决这个问题。我根据您的回答更新了我的问题中的 pv.yaml。看起来对吗?我仍然得到相同的结果。
    • PVC 仍然无人认领吗?
    • 是的 PVC 在一个页面上显示为 pending,但在 StatefulSet PersistentVolumeClaim is not bound: "mongo-persistent-storage-mongo-0" (repeated 2 times) 上仍然出现此错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2017-04-08
    • 2019-08-26
    • 2021-08-27
    相关资源
    最近更新 更多