Kubernetes无法为pod

时间:2018-05-07 15:49:26

标签: 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

然后我将具有制作PVC的pod的this StatefulSet部署到此卷。

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

当我尝试部署时,我收到以下错误:

  

无法为pod安装卷   “mongo-0_default(2735bc71-5201-11e8-804f-02dffec55fd2)”:超时   已过期等待连接/装入pod的卷   “默认”/ “蒙戈-0”。未附加/未安装的列表   体积= [蒙戈持久存储]

在设置持久音量时错过了一步吗?

2 个答案:

答案 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物理内存之一已损坏。卸下内存解决了该问题。