2017-03-01 2 views
0

Je cours 3 zookeepers petset dont le volume utilise le volume persistant de glusterfs. Tout est bon si c'est la première fois que vous lancez le petset.Redémarrer Kubernetes petset va nettoyer le volume persistant

Une de mes exigences est que si le jeu de petset est tué, alors après que je l'ai redémarré, ils utiliseront toujours le même volume persistant.

Le problème auquel je suis confronté maintenant est qu'après le redémarrage de petset, les données d'origine dans le volume persistant seront nettoyées. Alors, comment puis-je résoudre ce problème au lieu de copier manuellement le fichier sur ce volume? et j'ai essayé reclaimPolicy conserver et supprimer et les deux nettoieront le volume. Merci.

Voici les fichiers de configuration.

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 

La raison trouvé est que j'utilise zkServer-initialize.sh pour forcer id Zookeeper utilisation, mais dans le script, il va nettoyer le dataDir.

+0

Bienvenue dans StackOverflow - vous devriez peut-être également partager votre configuration pour vous assurer que les utilisateurs peuvent facilement reproduire votre configuration et répondre à votre question. – pagid

+0

Merci pour l'aide. Les fichiers de configuration sont ajoutés. – HAO

Répondre

0

La raison trouvée est que j'utilise zkServer-initialize.sh pour forcer l'utilisation de zookeeper id, mais dans le script, il nettoiera le dataDir.