Getting started

Run Longhorn on Kubernetes using kubectl or Helm

Using kubectl

You can install Longhorn on any Kubernetes cluster using this command:

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml

One way to monitor the progress of the installation is to watch Pods being created in the longhorn-system namespace:

kubectl get pods \
--namespace longhorn-system \
--watch

Running Longhorn on Google Kubernetes Engine

Google Kubernetes Engine (GKE) requires some additional setup for Longorn to function properly. If you're a GKE user, read this doc before proceeding.

Using Helm

Helm setup

To install Longhorn using Helm, you first need to install Helm locally. If you're using a version prior to version 3.0, you need to install Tiller into your Kubernetes cluster with role-based access control (RBAC).

Once you have Helm installed, clone the Longhorn repository:

git clone https://github.com/longhorn/longhorn && cd longorn

Use this helm command to install Longhorn:

helm install ./longhorn/chart --name longhorn --namespace longhorn-system

This installs Longorn in the longhorn-system namespace. One of two available drivers—CSI or FlexVolume—is chosen automatically based on the version of Kubernetes that you're using.

A successful CSI-based deployment, for example, looks like this:

kubectl -n longhorn-system get pod
NAME                                        READY     STATUS    RESTARTS   AGE
csi-attacher-0                              1/1       Running   0          6h
csi-provisioner-0                           1/1       Running   0          6h
engine-image-ei-57b85e25-8v65d              1/1       Running   0          7d
engine-image-ei-57b85e25-gjjs6              1/1       Running   0          7d
engine-image-ei-57b85e25-t2787              1/1       Running   0          7d
longhorn-csi-plugin-4cpk2                   2/2       Running   0          6h
longhorn-csi-plugin-ll6mq                   2/2       Running   0          6h
longhorn-csi-plugin-smlsh                   2/2       Running   0          6h
longhorn-driver-deployer-7b5bdcccc8-fbncl   1/1       Running   0          6h
longhorn-manager-7x8x8                      1/1       Running   0          6h
longhorn-manager-8kqf4                      1/1       Running   0          6h
longhorn-manager-kln4h                      1/1       Running   0          6h
longhorn-ui-f849dcd85-cgkgg                 1/1       Running   0          5d

Accessing the UI

Once Longhorn has been installed in your Kubernetes cluster, you can access the UI dashboard by getting its external service IP and navigating to it in your browser:

kubectl -n longhorn-system get svc

The output should look something like this:

NAME                TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE
longhorn-backend    ClusterIP      10.20.248.250   <none>           9500/TCP       58m
longhorn-frontend   LoadBalancer   10.20.245.110   100.200.200.123  80:30697/TCP   58m

In the example above, the public IP is 100.200.200.123.

No authentication by default

If you installed Longhorn using the kubectl instructions above, the Longhorn UI does not require authentication.

The Longhorn UI looks like this: