如何重用现有的持久性卷声明

时间:2017-11-05 13:42:31

标签: kubernetes persistent-volumes persistent-volume-claims

我删除了我的elasticsearch集群,但是在我部署了新集群之后,我需要访问存储在3 Persistent Volumes PV上的旧数据,如下所示:

NAME                       STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
storage-es-data-0          Bound     pvc-19429b0b-ba42-11e7-979d-42010a840ff7   12Gi       RWO            standard       10d
storage-es-data-1          Bound     pvc-36505962-ba42-11e7-979d-42010a840ff7   12Gi       RWO            standard       10d
storage-es-data-2          Bound     pvc-422da328-ba42-11e7-979d-42010a840ff7   12Gi       RWO            standard       10d

这是旧PV声明的描述:

NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                              STORAGECLASS   REASON    AGE
pvc-19429b0b-ba42-11e7-979d-42010a840ff7   12Gi       RWO            Delete           Bound     default/storage-es-data-0          standard                 10d
pvc-36505962-ba42-11e7-979d-42010a840ff7   12Gi       RWO            Delete           Bound     default/storage-es-data-1          standard                 10d
pvc-422da328-ba42-11e7-979d-42010a840ff7   12Gi       RWO            Delete           Bound     default/storage-es-data-2          standard                 10d

我的新部署描述如下:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: es-data
  labels:
    component: elasticsearch
    role: data
spec:
  replicas: 1
  template:
    metadata:
      labels:
        component: elasticsearch
        role: data
    spec:
      initContainers:
      - name: init-sysctl
        image: busybox
        imagePullPolicy: IfNotPresent
        command: ["sysctl", "-w", "vm.max_map_count=262144"]
        securityContext:
          privileged: true
      containers:
      - name: es-data
        image: docker.elastic.co/elasticsearch/elasticsearch:5.6.3
        imagePullPolicy: Always
        ports:
        - containerPort: 9300
          name: transport
          protocol: TCP
        volumeMounts:
        - name: storage
          mountPath: /data
      volumes:
      - name: storage
        persistentVolumeClaim:
          claimName: storage-es-data-0

将我的pod与Loadblance服务连接后,我没有找到任何文件。我错过了什么吗?如何在同一个POD中使用三个PV。

1 个答案:

答案 0 :(得分:1)

您的deployment yaml文件是正确的。您应该能够在您的广告连播中的pvc-19429b0b-ba42-11e7-979d-42010a840ff7文件夹中的/data卷中找到文件。

为了在同一个POD中使用三个PV,只需将它们添加到deployment yaml:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: es-data
  labels:
    component: elasticsearch
    role: data
spec:
  replicas: 1
  template:
    metadata:
      labels:
        component: elasticsearch
        role: data
    spec:
      initContainers:
      - name: init-sysctl
        image: busybox
        imagePullPolicy: IfNotPresent
        command: ["sysctl", "-w", "vm.max_map_count=262144"]
        securityContext:
          privileged: true
      containers:
      - name: es-data
        image: docker.elastic.co/elasticsearch/elasticsearch:5.6.3
        imagePullPolicy: Always
        ports:
        - containerPort: 9300
          name: transport
          protocol: TCP
        volumeMounts:
        - name: storage-0
          mountPath: /data0
        - name: storage-1
          mountPath: /data1
        - name: storage-2
          mountPath: /data2
      volumes:
      - name: storage-0
        persistentVolumeClaim:
          claimName: storage-es-data-0
      - name: storage-1
        persistentVolumeClaim:
          claimName: storage-es-data-1
      - name: storage-2
        persistentVolumeClaim:
          claimName: storage-es-data-2