2017-03-01 7 views
0

glusterfs永続ボリュームを使用している3つのzookeepers petsetを実行しています。あなたがペットセットを始めたのが初めてならば、すべてが良いことです。Restart Kubernetes petsetは永続ボリュームを消去します

私の要件の1つは、petsetが強制終了された場合、再起動後も同じ永続ボリュームを使用することです。

私が直面している問題は、petsetを再起動すると、永続ボリューム内の元のデータが消去されるということです。では、手動でそのボリュームからファイルをコピーする代わりに、この問題をどのように解決できますか?私はreclaimPolicyの保持と削除を試み、両方ともボリュームを消去します。ありがとう。

以下は設定ファイルです。

PV

apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: glusterfsvol-zookeeper-0 
spec: 
    capacity: 
    storage: 1Gi 
    accessModes: 
    - ReadWriteMany 
    glusterfs: 
    endpoints: gluster-cluster 
    path: zookeeper-vol-0 
    readOnly: false 
    persistentVolumeReclaimPolicy: Retain 
    claimRef: 
    name: glusterfsvol-zookeeper-0 
    namespace: default 
--- 
apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: glusterfsvol-zookeeper-1 
spec: 
    capacity: 
    storage: 1Gi 
    accessModes: 
    - ReadWriteMany 
    glusterfs: 
    endpoints: gluster-cluster 
    path: zookeeper-vol-1 
    readOnly: false 
    persistentVolumeReclaimPolicy: Retain 
    claimRef: 
    name: glusterfsvol-zookeeper-1 
    namespace: default 
--- 
apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: glusterfsvol-zookeeper-2 
spec: 
    capacity: 
    storage: 1Gi 
    accessModes: 
    - ReadWriteMany 
    glusterfs: 
    endpoints: gluster-cluster 
    path: zookeeper-vol-2 
    readOnly: false 
    persistentVolumeReclaimPolicy: Retain 
    claimRef: 
    name: glusterfsvol-zookeeper-2 
    namespace: default 

PVC

apiVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
    name: glusterfsvol-zookeeper-0 
spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
    requests: 
     storage: 1Gi 
--- 
apiVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
    name: glusterfsvol-zookeeper-1 
spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
    requests: 
     storage: 1Gi 
--- 
apiVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
    name: glusterfsvol-zookeeper-2 
spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
    requests: 
     storage: 1Gi 

petset

apiVersion: apps/v1alpha1 
kind: PetSet 
metadata: 
    name: zookeeper 
spec: 
    serviceName: "zookeeper" 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: zookeeper 
     annotations: 
     pod.alpha.kubernetes.io/initialized: "true" 
    spec: 
     terminationGracePeriodSeconds: 0 
     containers: 
     - name: zookeeper 
     securityContext: 
      privileged: true 
      capabilities: 
      add: 
       - IPC_LOCK 
     image: kuanghaochina/zookeeper-3.5.2-alpine-jdk:latest 
     imagePullPolicy: Always 
     ports: 
      - containerPort: 2888 
      name: peer 
      - containerPort: 3888 
      name: leader-election 
      - containerPort: 2181 
      name: client 
     env: 
     - name: ZOOKEEPER_LOG_LEVEL 
      value: INFO 
     volumeMounts: 
     - name: glusterfsvol 
      mountPath: /opt/zookeeper/data 
      subPath: data 
     - name: glusterfsvol 
      mountPath: /opt/zookeeper/dataLog 
      subPath: dataLog 
    volumeClaimTemplates: 
    - metadata: 
     name: glusterfsvol 
    spec: 
     accessModes: 
     - ReadWriteMany 
     resources: 
     requests: 
      storage: 1Gi 

た理由は、私が飼育係の利用IDを強制的にzkServer-initialize.shを使用しますが、中にいますということですスクリプトを実行すると、dataDirがクリーンアップされます。

+0

ようこそStackOverflow - あなたの設定を共有して、人々が簡単にセットアップを再現し、質問に答えることができるようにする必要があります。 – pagid

+0

助けてくれてありがとう。設定ファイルが追加されます。 – HAO

答えて

0

私はzkServer-initialize.shを使用してzookeeper use idを強制的に使用していますが、スクリプトではdataDirを消去します。

関連する問題