Kubernetes 无法为 pod 挂载卷

Phi*_*ide 3 kubernetes kubernetes-pvc

我正在尝试设置一个卷以在 k8s 上与 Mongo 一起使用。

kubectl create -f pv.yaml用来创建卷。

pv.yaml:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pvvolume
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/nfs"
  claimRef:
    kind: PersistentVolumeClaim
    namespace: default
    name: pvvolume
Run Code Online (Sandbox Code Playgroud)

然后我将这个 StatefulSet部署到这个卷,它有 pod 制作 PVC。

我的卷似乎创建没有问题,我希望它只使用主机节点的存储。

当我尝试部署时,出现以下错误:

无法为 pod“mongo-0_default(2735bc71-5201-11e8-804f-02dffec55fd2)”挂载卷:等待卷挂载/挂载 pod“default”/“mongo-0”超时超时。未附加/未挂载的卷列表=[mongo-persistent-storage]

在设置持久卷时错过了一步?

whi*_*s11 5

持久卷只是 kubernetes 集群中某些存储可用性的声明。在此阶段没有与您的 pod 绑定。

由于您的 pod 是通过 部署的StatefulSet,因此您的集群中应该有一个或多个PersistentVolumeClaims将 pod 与 PersistentVolume 连接的对象。

为了手动将 PV 与 PVC 绑定,您需要通过在其规范部分添加以下内容来编辑您的 PVC:

volumeName: "<your persistent volume name>"
Run Code Online (Sandbox Code Playgroud)

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


Luk*_*ski 5

我的情况是一个边缘情况,我怀疑你能否达到它。然而,我会描述它,因为它让我失去了很多白发——也许它会拯救你的头发。

尽管PVPVC被分类,但我还是发生了同样的错误。Pod一直在ContainerCreating盯着,却kubectl get events抛出了这个问题中所问的错误。

$ kubectl get pv
NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                     STORAGECLASS   REASON   AGE
sewage-db   5Ti        RWO            Retain           Bound    global-sewage/sewage-db   nfs                     3h40m

$kubectl get pvc -n global-sewage 
NAME        STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
sewage-db   Bound    sewage-db   5Ti        RWO            nfs            3h39m
Run Code Online (Sandbox Code Playgroud)

重新启动服务器后,发现 32GiB RAM 物理内存之一已损坏。删除内存解决了问题。