9.2. Upgrading the Red Hat Gluster Storage Pods

Following are the steps for updating a DaemonSet for glusterfs:
  1. Execute the following command to delete the DeamonSet:
    # oc delete ds <ds-name> --cascade=false
    Using --cascade=false option while deleting the old DaemonSet does not delete the gluster pods but deletes only the DaemonSet. After deleting the old DaemonSet, you must load the new one. When you manually delete the old pods, the new pods which are created will have the configurations of the new DaemonSet.
    For example,
    # oc delete ds glusterfs  --cascade=false
    daemonset "glusterfs" deleted
  2. Execute the following commands to verify all the old pods are up:
    # oc get pods
    For example,
    # oc get pods
    NAME                             READY     STATUS    RESTARTS   AGE
    glusterfs-0h68l                  1/1       Running   0          3d
    glusterfs-0vcf3                  1/1       Running   0          3d
    glusterfs-gr9gh                  1/1       Running   0          3d
    heketi-1-zpw4d                   1/1       Running   0          3h
    storage-project-router-2-db2wl   1/1       Running   0          4d
    
  3. Execute the following command to delete the old glusterfs template:
    # oc delete templates glusterfs
    For example,
    # oc delete templates glusterfs
    template “glusterfs” deleted
  4. Execute the following command to register new gluster template:
    # oc create -f /usr/share/heketi/templates/glusterfs-template.yaml
    
    For example,
    # oc create -f /usr/share/heketi/templates/glusterfs-template.yaml 
    template “glusterfs” created
    
  5. Execute the following commands to start the gluster DeamonSet:
    # oc process glusterfs | oc create -f -
    For example,
    # oc process glusterfs | oc create -f -
    Deamonset “glusterfs” created
  6. Execute the following command to identify the old gluster pods that needs to be deleted:
    # oc get pods
    For example,
    # oc get pods
    NAME                             READY     STATUS    RESTARTS   AGE
    glusterfs-0h68l                  1/1       Running   0          3d
    glusterfs-0vcf3                  1/1       Running   0          3d
    glusterfs-gr9gh                  1/1       Running   0          3d
    heketi-1-zpw4d                   1/1       Running   0          3h
    storage-project-router-2-db2wl   1/1       Running   0          4d
    
  7. Execute the following command to delete the old gluster pods:
    # oc delete pod <gluster_pod>
    For example,
    # oc delete pod glusterfs-0vcf3 
    pod  “glusterfs-0vcf3” deleted
    
    The delete pod command will terminate the old pod and create a new pod. Run # oc get pods -w and check the Age of the pod and READY status should be 1/1. The following is the example output showing the status progression from termination to creation of the pod.
    # oc get pods -w
    NAME                             READY     STATUS        RESTARTS   AGE
    glusterfs-0vcf3                  1/1       Terminating   0          3d
    …
    
    # oc get pods -w
    NAME                             READY     STATUS              RESTARTS   AGE
    glusterfs-pqfs6                  0/1       ContainerCreating   0          1s
    …
    
    # oc get pods -w
    NAME                             READY     STATUS        RESTARTS   AGE
    glusterfs-pqfs6                  1/1       Running       0          2m
  8. Repeat Step 7 to delete all the gluster pods. Gluster pods should follow rolling upgrade. Hence, you must ensure that the new pod is running before deleting the next old gluster pod. In this release, we support OnDelete Strategy DaemonSet update strategy . With OnDelete Strategy update strategy, after you update a DaemonSet template, new DaemonSet pods will only be created when you manually delete old DaemonSet pods.
  9. Execute the following command to verify that the pods are running:
    # oc get pods
    
    For example,
    # oc get pods
    NAME                             READY     STATUS    RESTARTS   AGE
    glusterfs-j241c                  1/1       Running   0          4m
    glusterfs-pqfs6                  1/1       Running   0          7m
    glusterfs-wrn6n                  1/1       Running   0          12m
    heketi-1-zpw4d                   1/1       Running   0          4h
    storage-project-router-2-db2wl   1/1       Running   0          4d
    
  10. Execute the following command to verify if you have upgraded the pod to the latest version:
    # oc rsh <gluster_pod_name> glusterd --version