kubernetes - 安装 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 使用不同的图像。没有任何工作。
解决方案
看起来您的 /mnt/data 位于根分区上,因此它提供与 rootfs 中的任何其他文件夹相同的可用空间。
PV/PVC 的请求和定义容量的问题是,这些是匹配或提示动态供应商的唯一值。如果是 hostPath 和手动创建的 PV,您可以定义 300TB 并且它将绑定,即使 hostPath 的实际文件夹具有 5G,因为设备的实际大小未验证(这是合理的,因为您只信任提供的数据光伏)。
所以正如我所说,检查您的 /mnt/data 是否不仅仅是 rootfs 的一部分。如果仍有问题mount
,请在运行 pod 的节点上提供命令输出。
推荐阅读
- html - 你怎么放在表格标签内?
- haskell - 类型未正确写入且不接受 Eq 约束?
- javascript - 如何重新加载并等待元素出现?
- r - 将一系列值分配给R中的描述性变量
- linux - Cron 运行太频繁
- mysql - 如何在一个查询中获取每个 url 的 url 浏览次数
- r - cor.test() p 值与手动不同?
- c# - 我可以让我的代码在 Visual Studio“清洁解决方案”命令之后直接运行吗?
- java - 按钮没有通过句号“。” 作为 EditText 对象的字符串
- reactjs - 调用视频“onTimeUpdate”事件时视频意外暂停(使用 React Hooks)