As of March 27, 2023, the Longhorn add-on is deprecated. The Longhorn add-on might be removed from kURL after September 31st, 2023. Existing installations that use the Longhorn add-on are supported during this deprecation window. We recommend that you migrate from the Longhorn add-on to either the OpenEBS or Rook add-on on or before September 31st, 2023. For more information about migrating from Longhorn, see Migrating to Change CSI Add-On.
Longhorn is a CNCF Sandbox Project originally developed by Rancher labs as a “lightweight, reliable and easy-to-use distributed block storage system for Kubernetes”. Longhorn uses a microservice-based architecture to create a pod for every Custom Resource in the Longhorn ecosystem: Volumes, Replicas, a control plane, a data plane, etc.
Longhorn uses the /var/lib/longhorn
directory for storage on all nodes. For disk requirements, see Add-on Directory Disk Space Requirements.
For production installs, an SSD should be mounted at /var/lib/longhorn
.
The following host packages are required for Red Hat Enterprise Linux 9 and Rocky Linux 9:
spec:
longhorn:
storageOverProvisioningPercentage: 200
uiBindPort: 30880
uiReplicaCount: 0
version: latest
Flag | Usage |
---|---|
storageOverProvisioningPercentage | Determines the amount of PVC capacity that Longhorn will allow to be provisioned based on the real, available disk space. Default is 200 See Longhorn Documentation for a thorough explanation. |
uiBindPort | The port number used for the NodePort service exposing the Longhorn UI. Default is 30880. |
uiReplicaCount | The number of replicas created for the Longhorn UI Deployment. Default is 0. |
version | The version of Longhorn to be installed. |
The Longhorn UI deployment does not run by default because it is an unauthenticated application.
It can be enabled by setting the replica count to 1
in the longhorn spec.
This will make the UI available on port 30880
on all nodes in the cluster.
spec:
longhorn:
version: latest
uiReplicaCount: 1
To enable the UI without re-running the installer, use the command kubectl -n longhorn-system scale deployment longhorn-ui --replicas=1
.
It is not possible to upgrade multiple minor versions of the Longhorn add-on at once.
Individual upgrades from one version to the next are required for upgrading multiple minor versions.
For example, to upgrade from 1.1.2
to 1.3.1
, you must first install 1.2.2
or 1.2.4
.
If Rook was previously installed but is no longer specified in the kURL spec and Longhorn 1.1.2+ is specified instead, Longhorn will migrate data from Rook PVCs to Longhorn. This will involve stopping all pods mounting Rook PVCs while the migration takes place.
If MinIO is also specified in the new kURL spec and completes its migration process successfully, Rook will be removed to free up resources.