Kubernetes Persistent Volume不适用于GCE

时间:2017-05-09 18:18:48

标签: elasticsearch docker kubernetes google-cloud-platform persistent-storage

我正在努力使我的弹性搜索pod持久化,以便在重新创建部署或pod时保留数据。弹性搜索是Graylog2设置的一部分。

在我完成所有操作后,我向Graylog发送了一些日志,我可以看到它们出现在仪表板上。但是,我删除了elasticsearch pod,重新创建后,Graylog仪表板上的所有数据都丢失了。

我正在使用GCE。

这是我的持久性卷配置:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: elastic-pv
  labels:
    type: gcePD
spec:
  capacity:
    storage: 200Gi
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    fsType: ext4
    pdName: elastic-pv-disk

永久卷声明配置:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: elastic-pvc
  labels:
    type: gcePD
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 200Gi

这是我的弹性搜索部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: elastic-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        type: elasticsearch
    spec:
      containers:
      - name: elastic-container
        image: gcr.io/project/myelasticsearch:v1
        imagePullPolicy: Always
        ports:
        - containerPort: 9300
          name: first-port
          protocol: TCP
        - containerPort: 9200
          name: second-port
          protocol: TCP
        volumeMounts:
            - name: elastic-pd
              mountPath: /data/db
      volumes:
      - name: elastic-pd
        persistentVolumeClaim:
          claimName: elastic-pvc

kubectl describe pod的输出:

Name:       elastic-deployment-1423685295-jt6x5
Namespace:  default
Node:       gke-sd-logger-default-pool-2b3affc0-299k/10.128.0.6
Start Time: Tue, 09 May 2017 22:59:59 +0500
Labels:     pod-template-hash=1423685295
        type=elasticsearch
Status:     Running
IP:     10.12.0.11
Controllers:    ReplicaSet/elastic-deployment-1423685295
Containers:
  elastic-container:
    Container ID:   docker://8774c747e2a56363f657a583bf5c2234ed2cff64dc21b6319fc53fdc5c1a6b2b
    Image:      gcr.io/thematic-flash-786/myelasticsearch:v1
    Image ID:       docker://sha256:7c25be62dbad39c07c413888e275ae419a66070d37e0d98bf5008e15d7720eec
    Ports:      9300/TCP, 9200/TCP
    Requests:
      cpu:      100m
    State:      Running
      Started:      Tue, 09 May 2017 23:02:11 +0500
    Ready:      True
    Restart Count:  0
    Volume Mounts:
      /data/db from elastic-pd (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qtdbb (ro)
    Environment Variables:  <none>
Conditions:
  Type      Status
  Initialized   True
  Ready     True
  PodScheduled  True
Volumes:
  elastic-pd:
    Type:   PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  elastic-pvc
    ReadOnly:   false
  default-token-qtdbb:
    Type:   Secret (a volume populated by a Secret)
    SecretName: default-token-qtdbb
QoS Class:  Burstable
Tolerations:    <none>
No events.

kubectl describe pv的输出:

Name:       elastic-pv
Labels:     type=gcePD
StorageClass:
Status:     Bound
Claim:      default/elastic-pvc
Reclaim Policy: Retain
Access Modes:   RWO
Capacity:   200Gi
Message:
Source:
    Type:   GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
    PDName: elastic-pv-disk
    FSType: ext4
    Partition:  0
    ReadOnly:   false
No events.

kubectl describe pvc的输出:

Name:       elastic-pvc
Namespace:  default
StorageClass:
Status:     Bound
Volume:     elastic-pv
Labels:     type=gcePD
Capacity:   200Gi
Access Modes:   RWO
No events.

确认存在真实磁盘:

enter image description here

Persistent Volume不持久的原因是什么?

1 个答案:

答案 0 :(得分:1)

在官方图片中,Elasticsearch数据存储在/usr/share/elasticsearch/data而不是/data/db。您似乎需要将安装更新为/usr/share/elasticsearch/data,而不是将数据存储在持久卷上。