3.5 KiB
Rancher Longhorn Chart
The following document pertains to running Longhorn from the Rancher 2.0 chart.
Source Code
Longhorn is 100% open source software. Project source code is spread across a number of repos:
- Longhorn Engine -- Core controller/replica logic https://github.com/rancher/longhorn-engine
- Longhorn Manager -- Longhorn orchestration, includes Flexvolume driver for Kubernetes https://github.com/rancher/longhorn-manager
- Longhorn UI -- Dashboard https://github.com/rancher/longhorn-ui
Prerequisites
- Docker v1.13+
- Kubernetes v1.8+ cluster with 1 or more nodes and Mount Propagation feature enabled. If your Kubernetes cluster was provisioned by Rancher v2.0.7+ or later, MountPropagation feature is enabled by default. Check your Kubernetes environment now. If MountPropagation is disabled, the Kubernetes Flexvolume driver will be deployed instead of the default CSI driver. Base Image feature will also be disabled if MountPropagation is disabled.
- Make sure
curl
,findmnt
,grep
,awk
andblkid
has been installed in all nodes of the Kubernetes cluster. - Make sure
open-iscsi
has been installed in all nodes of the Kubernetes cluster. For GKE, recommended Ubuntu as guest OS image since it containsopen-iscsi
already.
Uninstallation
Do not attempt to immediately delete Longhorn App from Rancher UI. Longhorn propagates device mounts which can damage the host if not unmounted properly. Follow this procedure instead.
-
To prevent damage to the Kubernetes cluster, we recommend deleting all Kubernetes workloads using Longhorn volumes (PersistentVolume, PersistentVolumeClaim, StorageClass, Deployment, StatefulSet, DaemonSet, etc).
-
From the
Cluster
tab, clickLaunch kubectl
and run this command:
curl -sSfL https://raw.githubusercontent.com/rancher/longhorn-manager/master/deploy/scripts/cleanup.sh | bash
- Delete Longhorn App from Rancher UI. This deletes the remaining chart components.
Troubleshooting
I deleted the Longhorn App from Rancher UI instead of following the uninstallation procedure
Redeploy the (same version) Longhorn App. Follow the uninstallation procedure above.
Problems with CRDs
If your CRD instances or the CRDs themselves can't be deleted for whatever reason, run the commands below to clean up. Caution: this will wipe all Longhorn state!
# Delete CRD finalizers, instances and definitions
for crd in $(kubectl get crd -o jsonpath={.items[*].metadata.name} | tr ' ' '\n' | grep longhorn.rancher.io); do
kubectl -n ${NAMESPACE} get $crd -o yaml | sed "s/\- longhorn.rancher.io//g" | kubectl apply -f -
kubectl -n ${NAMESPACE} delete $crd --all
kubectl delete crd/$crd
done
Volume can be attached/detached from UI, but Kubernetes Pod/StatefulSet etc cannot use it
Check if volume plugin directory has been set correctly. This is automatically detected unless user explicitly set it.
By default, Kubernetes uses /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
, as stated in the official document.
Some vendors choose to change the directory for various reasons. For example, GKE uses /home/kubernetes/flexvolume
instead.
If you don't know what the correct directory is for your cluster, please leave the Chart question blank.
Please see link for more information.