首页 > 解决方案 > 安装 k8 永久卷静默失败

问题描述

我正在尝试使用以下内容将 PV 安装到 pod 中:

    {
  "kind": "PersistentVolume",
  "apiVersion": "v1",
  "metadata": {
    "name": "pv",
    "labels": {
      "type": "ssd1-zone1"
    }
  },
  "spec": {
    "capacity": {
      "storage": "150Gi"
    },
    "hostPath": {
      "path": "/mnt/data"
    },
    "accessModes": [
      "ReadWriteOnce"
    ],
    "persistentVolumeReclaimPolicy": "Retain",
    "storageClassName": "zone1"
  }
}

{
  "kind": "PersistentVolumeClaim",
  "apiVersion": "v1",
  "metadata": {
    "name": "pvc",
    "namespace": "clever"
  },
  "spec": {
    "accessModes": [
      "ReadWriteOnce"
    ],
    "resources": {
      "requests": {
        "storage": "150Gi"
      }
    },
    "volumeName": "pv",
    "storageClassName": "zone1"
  }
}
kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: pv
      persistentVolumeClaim:
       claimName: pvc
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: pv

pod 可以正确创建并毫无问题地使用 PVC 声明。但是,当我 ssh 进入 pod 以查看挂载时,大小为 50Gb,这是附加存储的大小,而不是我指定的卷。

root@task-pv-pod:/# df -aTh | grep "/html"
/dev/vda1      xfs       50G   13G   38G  26% /usr/share/nginx/html

PVC 似乎是正确的:

root@5139993be066:/# kubectl describe pvc pvc
Name:          pvc
Namespace:     default
StorageClass:  zone1
Status:        Bound
Volume:        pv
Labels:        <none>
Annotations:   kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"pvc","namespace":"default"},"spec":{"accessModes":["ReadWriteO...
               pv.kubernetes.io/bind-completed=yes
Finalizers:    []
Capacity:      150Gi
Access Modes:  RWO
Events:        <none>

我已经多次删除并重新创建了卷和声明,并尝试为我的 pod 使用不同的图像。没有任何工作。

标签: kubernetespersistenceopenstack

解决方案


看起来您的 /mnt/data 位于根分区上,因此它提供与 rootfs 中的任何其他文件夹相同的可用空间。

PV/PVC 的请求和定义容量的问题是,这些是匹配或提示动态供应商的唯一值。如果是 hostPath 和手动创建的 PV,您可以定义 300TB 并且它将绑定,即使 hostPath 的实际文件夹具有 5G,因为设备的实际大小未验证(这是合理的,因为您只信任提供的数据光伏)。

所以正如我所说,检查您的 /mnt/data 是否不仅仅是 rootfs 的一部分。如果仍有问题mount,请在运行 pod 的节点上提供命令输出。


推荐阅读