Update upgrade.md
This commit is contained in:
parent
0dc32d7676
commit
4fe551be8a
@ -7,52 +7,55 @@ Here we cover how to upgrade to Longhorn v0.3 from all previous releases.
|
|||||||
It's recommended to create a recent backup of every volume to the backupstore
|
It's recommended to create a recent backup of every volume to the backupstore
|
||||||
before upgrade.
|
before upgrade.
|
||||||
|
|
||||||
Create an on-cluster backupstore if you haven't already. We'll use NFS in this
|
If you don't have a on-cluster backupstore already, create one. Here we'll use NFS for example.
|
||||||
example.
|
1. Execute following command to create the backupstore
|
||||||
```
|
```
|
||||||
kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/v0.3-rc/deploy/backupstores/nfs-backupstore.yaml
|
kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/v0.3-rc/deploy/backupstores/nfs-backupstore.yaml
|
||||||
```
|
```
|
||||||
|
2. On Longhorn UI Settings page, set Backup Target to
|
||||||
On Settings page, set Backup Target to
|
|
||||||
`nfs://longhorn-test-nfs-svc.default:/opt/backupstore` and click `Save`.
|
`nfs://longhorn-test-nfs-svc.default:/opt/backupstore` and click `Save`.
|
||||||
|
|
||||||
Navigate to each volume detail page and click `Take Snapshot`. Click the new
|
Navigate to each volume detail page and click `Take Snapshot` (it's recommended to run `sync` in the host command line before `Take Snapshot`). Click the new
|
||||||
snapshot and click `Backup`.
|
snapshot and click `Backup`. Wait for the new backup to show up in the volume's backup list before continuing.
|
||||||
|
|
||||||
## Check For Issues
|
## Check For Issues
|
||||||
|
|
||||||
Make sure no volume is in degraded or faulted state. Wait for degraded
|
Make sure no volume is in degraded or faulted state. Wait for degraded
|
||||||
volumes to heal and delete/restore faulted volumes before proceeding.
|
volumes to heal and delete/salvage faulted volumes before proceeding.
|
||||||
|
|
||||||
## Detach Volumes
|
## Detach Volumes
|
||||||
|
|
||||||
Shutdown all Kubernetes Pods using Longhorn volumes in order to detach the
|
Shutdown all Kubernetes Pods using Longhorn volumes in order to detach the
|
||||||
volumes. The easiest way to achieve this is by deleting all workloads. If
|
volumes. The easiest way to achieve this is by deleting all workloads and recreate them later after upgrade. If
|
||||||
this is not desirable, some workloads may be suspended. We will cover how
|
this is not desirable, some workloads may be suspended. We will cover how
|
||||||
each workload can be modified to shut down its pods.
|
each workload can be modified to shut down its pods.
|
||||||
|
|
||||||
|
### Deployment
|
||||||
|
Edit the deployment with `kubectl edit deploy/<name>`.
|
||||||
|
Set `.spec.replicas` to `0`.
|
||||||
|
|
||||||
|
### StatefulSet
|
||||||
|
Edit the statefulset with `kubectl edit statefulset/<name>`.
|
||||||
|
Set `.spec.replicas` to `0`.
|
||||||
|
|
||||||
|
### DaemonSet
|
||||||
|
There is no way to suspend this workload.
|
||||||
|
Delete the daemonset with `kubectl delete ds/<name>`.
|
||||||
|
|
||||||
|
### Pod
|
||||||
|
Delete the pod with `kubectl delete pod/<name>`.
|
||||||
|
There is no way to suspend a pod not managed by a workload controller.
|
||||||
|
|
||||||
### CronJob
|
### CronJob
|
||||||
Edit the cronjob with `kubectl edit cronjob/<name>`.
|
Edit the cronjob with `kubectl edit cronjob/<name>`.
|
||||||
Set `.spec.suspend` to `true`.
|
Set `.spec.suspend` to `true`.
|
||||||
Wait for any currently executing jobs to complete, or terminate them by
|
Wait for any currently executing jobs to complete, or terminate them by
|
||||||
deleting relevant pods.
|
deleting relevant pods.
|
||||||
|
|
||||||
### DaemonSet
|
|
||||||
Delete the daemonset with `kubectl delete ds/<name>`.
|
|
||||||
There is no way to suspend this workload.
|
|
||||||
|
|
||||||
### Deployment
|
|
||||||
Edit the deployment with `kubectl edit deploy/<name>`.
|
|
||||||
Set `.spec.replicas` to `0`.
|
|
||||||
|
|
||||||
### Job
|
### Job
|
||||||
Consider allowing the single-run job to complete.
|
Consider allowing the single-run job to complete.
|
||||||
Otherwise, delete the job with `kubectl delete job/<name>`.
|
Otherwise, delete the job with `kubectl delete job/<name>`.
|
||||||
|
|
||||||
### Pod
|
|
||||||
Delete the pod with `kubectl delete pod/<name>`.
|
|
||||||
There is no way to suspend a pod not managed by a workload controller.
|
|
||||||
|
|
||||||
### ReplicaSet
|
### ReplicaSet
|
||||||
Edit the replicaset with `kubectl edit replicaset/<name>`.
|
Edit the replicaset with `kubectl edit replicaset/<name>`.
|
||||||
Set `.spec.replicas` to `0`.
|
Set `.spec.replicas` to `0`.
|
||||||
@ -61,21 +64,19 @@ Set `.spec.replicas` to `0`.
|
|||||||
Edit the replicationcontroller with `kubectl edit rc/<name>`.
|
Edit the replicationcontroller with `kubectl edit rc/<name>`.
|
||||||
Set `.spec.replicas` to `0`.
|
Set `.spec.replicas` to `0`.
|
||||||
|
|
||||||
### StatefulSet
|
Wait for the volumes using by the Kubernetes to complete detaching.
|
||||||
Edit the statefulset with `kubectl edit statefulset/<name>`.
|
|
||||||
Set `.spec.replicas` to `0`.
|
|
||||||
|
|
||||||
Detach all remaining volumes from Longhorn UI. These volumes were most likely
|
Then detach all remaining volumes from Longhorn UI. These volumes were most likely
|
||||||
created and attached outside of Kubernetes via Longhorn UI or REST API.
|
created and attached outside of Kubernetes via Longhorn UI or REST API.
|
||||||
|
|
||||||
## Uninstall Old Version
|
## Uninstall the Old Version of Longhorn
|
||||||
|
|
||||||
Make note of `BackupTarget` on the `Setting` page. You will need to manually
|
Make note of `BackupTarget` on the `Setting` page. You will need to manually
|
||||||
set `BackupTarget` after upgrading from either v0.1 or v0.2.
|
set `BackupTarget` after upgrading from either v0.1 or v0.2.
|
||||||
|
|
||||||
Delete Longhorn components.
|
Delete Longhorn components.
|
||||||
|
|
||||||
For Longhorn `v0.1`:
|
For Longhorn `v0.1` (most likely installed using Longhorn App in Rancher 2.0):
|
||||||
```
|
```
|
||||||
kubectl delete -f https://raw.githubusercontent.com/llparse/longhorn/v0.1/deploy/uninstall-for-upgrade.yaml
|
kubectl delete -f https://raw.githubusercontent.com/llparse/longhorn/v0.1/deploy/uninstall-for-upgrade.yaml
|
||||||
```
|
```
|
||||||
@ -87,19 +88,20 @@ kubectl delete -f https://raw.githubusercontent.com/rancher/longhorn/v0.2/deploy
|
|||||||
|
|
||||||
If both commands returned `Not found` for all components, Longhorn is probably
|
If both commands returned `Not found` for all components, Longhorn is probably
|
||||||
deployed in a different namespace. Determine which namespace is in use and
|
deployed in a different namespace. Determine which namespace is in use and
|
||||||
adjust `NAMESPACE` accordingly:
|
adjust `NAMESPACE` here accordingly:
|
||||||
```
|
```
|
||||||
NAMESPACE=longhorn-custom-ns
|
NAMESPACE=<some_longhorn_namespace>
|
||||||
curl -sSfL https://raw.githubusercontent.com/rancher/longhorn/v0.1/deploy/uninstall-for-upgrade.yaml|sed "s#^\( *\)namespace: longhorn#\1namespace: ${NAMESPACE}#g" > longhorn.yaml
|
curl -sSfL https://raw.githubusercontent.com/rancher/longhorn/v0.1/deploy/uninstall-for-upgrade.yaml|sed "s#^\( *\)namespace: longhorn#\1namespace: ${NAMESPACE}#g" > longhorn.yaml
|
||||||
kubectl delete -f longhorn.yaml
|
kubectl delete -f longhorn.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
## Backup Longhorn System
|
## Backup Longhorn System
|
||||||
|
|
||||||
Backup Longhorn CRD yaml to local directory.
|
We're going to backup Longhorn CRD yaml to local directory, so we can restore or inspect them later.
|
||||||
|
|
||||||
### v0.1
|
### v0.1
|
||||||
Check your backups to make sure Longhorn was running in namespace `longhorn`.
|
User must backup the CRDs for v0.1 because we will change the default deploying namespace for Longhorn.
|
||||||
|
Check your backups to make sure Longhorn was running in namespace `longhorn`, otherwise change the value of `NAMESPACE` below.
|
||||||
```
|
```
|
||||||
NAMESPACE=longhorn
|
NAMESPACE=longhorn
|
||||||
kubectl -n ${NAMESPACE} get volumes.longhorn.rancher.io -o yaml > longhorn-v0.1-backup-volumes.yaml
|
kubectl -n ${NAMESPACE} get volumes.longhorn.rancher.io -o yaml > longhorn-v0.1-backup-volumes.yaml
|
||||||
@ -110,7 +112,7 @@ kubectl -n ${NAMESPACE} get settings.longhorn.rancher.io -o yaml > longhorn-v0.1
|
|||||||
|
|
||||||
### v0.2
|
### v0.2
|
||||||
Check your backups to make sure Longhorn was running in namespace
|
Check your backups to make sure Longhorn was running in namespace
|
||||||
`longhorn-system`.
|
`longhorn-system`, otherwise change the value of `NAMESPACE` below.
|
||||||
```
|
```
|
||||||
NAMESPACE=longhorn-system
|
NAMESPACE=longhorn-system
|
||||||
kubectl -n ${NAMESPACE} get volumes.longhorn.rancher.io -o yaml > longhorn-v0.2-backup-volumes.yaml
|
kubectl -n ${NAMESPACE} get volumes.longhorn.rancher.io -o yaml > longhorn-v0.2-backup-volumes.yaml
|
||||||
@ -122,7 +124,7 @@ kubectl -n ${NAMESPACE} get settings.longhorn.rancher.io -o yaml > longhorn-v0.2
|
|||||||
## Delete CRDs in Different Namespace
|
## Delete CRDs in Different Namespace
|
||||||
|
|
||||||
This is only required for Rancher users running Longhorn App `v0.1`. Delete all
|
This is only required for Rancher users running Longhorn App `v0.1`. Delete all
|
||||||
CRDs from your namespace which is probably `longhorn`.
|
CRDs from your namespace which is `longhorn` by default.
|
||||||
```
|
```
|
||||||
NAMESPACE=longhorn
|
NAMESPACE=longhorn
|
||||||
kubectl -n ${NAMESPACE} get volumes.longhorn.rancher.io -o yaml | sed "s/\- longhorn.rancher.io//g" | kubectl apply -f -
|
kubectl -n ${NAMESPACE} get volumes.longhorn.rancher.io -o yaml | sed "s/\- longhorn.rancher.io//g" | kubectl apply -f -
|
||||||
@ -137,19 +139,13 @@ kubectl -n ${NAMESPACE} delete settings.longhorn.rancher.io --all
|
|||||||
|
|
||||||
## Install Longhorn v0.3
|
## Install Longhorn v0.3
|
||||||
|
|
||||||
### Rancher 2.x
|
### Installed with Longhorn App v0.1 in Rancher 2.x
|
||||||
For Rancher users who are running Longhorn v0.1, delete the Longhorn App from
|
For Rancher users who are running Longhorn v0.1, *Do not click the upgrade button.*
|
||||||
`Catalog Apps` screen in Rancher UI. *Do not click the upgrade button.* Launch
|
|
||||||
|
1. Delete the Longhorn App from `Catalog Apps` screen in Rancher UI. Launch
|
||||||
Longhorn App template version `0.3.0-rc4`.
|
Longhorn App template version `0.3.0-rc4`.
|
||||||
|
2. Restore Longhorn System. This step is only required for Rancher users running Longhorn App `v0.1`.
|
||||||
### Other Kubernetes Distro
|
Don't change the NAMESPACE variable below. Longhorn system will be installed in the `longhorn-system` namespace.
|
||||||
|
|
||||||
For Longhorn v0.2 users who are not using Rancher, follow
|
|
||||||
[the official Longhorn Deployment instructions](../README.md#deployment).
|
|
||||||
|
|
||||||
## Restore Longhorn System
|
|
||||||
|
|
||||||
This step is only required for Rancher users running Longhorn App `v0.1`.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
NAMESPACE=longhorn-system
|
NAMESPACE=longhorn-system
|
||||||
@ -159,9 +155,15 @@ sed "s#^\( *\)namespace: .*#\1namespace: ${NAMESPACE}#g" longhorn-v0.1-backup-en
|
|||||||
sed "s#^\( *\)namespace: .*#\1namespace: ${NAMESPACE}#g" longhorn-v0.1-backup-volumes.yaml | kubectl apply -f -
|
sed "s#^\( *\)namespace: .*#\1namespace: ${NAMESPACE}#g" longhorn-v0.1-backup-volumes.yaml | kubectl apply -f -
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Installed without using Longhorn App v0.1
|
||||||
|
|
||||||
|
For Longhorn v0.2 users who are not using Rancher, follow
|
||||||
|
[the official Longhorn Deployment instructions](../README.md#deployment).
|
||||||
|
|
||||||
|
|
||||||
## Access UI and Set BackupTarget
|
## Access UI and Set BackupTarget
|
||||||
|
|
||||||
Wait until the longhorn-ui pod is `Running`:
|
Wait until the longhorn-ui and longhorn-manager pods are `Running`:
|
||||||
```
|
```
|
||||||
kubectl -n longhorn-system get pod -w
|
kubectl -n longhorn-system get pod -w
|
||||||
```
|
```
|
||||||
@ -189,7 +191,7 @@ manually.
|
|||||||
|
|
||||||
## Note
|
## Note
|
||||||
|
|
||||||
Upgrade is always tricky. Keeping recent backups for volumes is critical.
|
Upgrade is always tricky. Keeping recent backups for volumes is critical. If anything goes wrong, you can restore the volume using the backup.
|
||||||
|
|
||||||
If you have any issues, please report it at
|
If you have any issues, please report it at
|
||||||
https://github.com/rancher/longhorn/issues and include your backup yaml files
|
https://github.com/rancher/longhorn/issues and include your backup yaml files
|
||||||
|
Loading…
Reference in New Issue
Block a user