我正在尝试在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
然后我将具有制作PVC的pod的this StatefulSet部署到此卷。
我的卷似乎没有问题,我希望它只使用主机节点的存储。
当我尝试部署时,我收到以下错误:
无法为pod安装卷 “mongo-0_default(2735bc71-5201-11e8-804f-02dffec55fd2)”:超时 已过期等待连接/装入pod的卷 “默认”/ “蒙戈-0”。未附加/未安装的列表 体积= [蒙戈持久存储]
在设置持久音量时错过了一步吗?
答案 0 :(得分:1)
持久性卷只是在kubernetes集群中声明某些存储的可用性。在此阶段,您的吊舱没有绑定。
由于您的广告管理系统是通过StatefulSet
部署的,因此您的群集中应该有一个或多个PersistentVolumeClaims
,它们是将广告连接与持久音量相关联的对象。
为了手动将PV与PVC绑定,您需要通过在其规范部分添加以下内容来编辑PVC:
volumeName: "<your persistent volume name>"
以下是有关此过程如何运作的说明:https://docs.openshift.org/latest/dev_guide/persistent_volumes.html#persistent-volumes-volumes-and-claim-prebinding
答案 1 :(得分:0)
我的案子是一个极端的案子,我怀疑您会达成。但是,我将对此进行描述,因为它花了我很多白发-也许它将节省您的头发。
尽管对 PV 和 PVC 进行了装箱,但我还是发生了同样的错误。 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
重新启动服务器后,发现32GiB RAM物理内存之一已损坏。卸下内存解决了该问题。