连接到Kubernetes中的持久卷?

时间:2018-05-04 18:53:43

标签: kubernetes kubernetes-pvc

我正在将堆栈转换为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次)

enter image description here

在持久性卷标签中,我看到看起来正常的卷:

enter image description here

我无法确定下一步,以便成功完成音量声明。

编辑#2

我进入了GUI上的PVC页面并手动添加了一个卷(基于@whites11的反馈)。我可以看到PVC已经更新了卷,但它仍处于未决状态。

enter image description here

编辑#3

意识到自从@whites11建议更改后,pod中的原始错误消息已更改。它现在是" persistentvolume" pvvolume"没找到(重复2次)",我想我只需要找出我写pvvolume的地方,而不是pv-volume。 (或者可能是-在某个地方被自动解析了?

enter image description here

1 个答案:

答案 0 :(得分:4)

您需要手动将PV绑定到PVC,方法是在PV规范中添加适当的claimRef: name: mongo-persisted-storag namespace: <your PVC namespace> 部分。

在实践中,使用您喜欢的方法编辑PV,并添加与此类似的部分:

spec

通过在volumeName: "<your volume name>" 部分添加以下内容,您需要编辑PVC以绑定正确的卷:

 driver.SwitchTo().Frame("content").SwitchTo().Frame("detailsDisplay");                        
 var element = driver.FindElement(By.XPath("//*[@id=\"divToolbar\"]/div[1]/table/tbody/tr/td[1]"));

以下是有关此过程如何运作的说明:https://docs.openshift.org/latest/dev_guide/persistent_volumes.html#persistent-volumes-volumes-and-claim-prebinding