--- # For workloads with application-level replication. # Longhorn replication is redundant for these -- replica=1 avoids double-writing. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: longhorn-single annotations: storageclass.kubernetes.io/is-default-class: "false" provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer parameters: numberOfReplicas: "1" staleReplicaTimeout: "30" fsType: "xfs" dataLocality: "strict-local" --- # For workloads that do not replicate data at the application layer. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: longhorn-double annotations: storageclass.kubernetes.io/is-default-class: "false" provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer parameters: numberOfReplicas: "2" staleReplicaTimeout: "30" fsType: "xfs" dataLocality: "best-effort" --- # For shared filesystem workloads that need true cross-node RWX. # The default longhorn class is migratable and creates a blockdev volume, not # a share-manager backed RWX filesystem. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: longhorn-rwx annotations: storageclass.kubernetes.io/is-default-class: "false" provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer parameters: numberOfReplicas: "3" staleReplicaTimeout: "30" fsType: "xfs" dataLocality: "best-effort" diskSelector: "ssd" migratable: "false" --- # Block-replicated volumes on hdd-tagged disks. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: longhorn-hdd-double annotations: storageclass.kubernetes.io/is-default-class: "false" provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer parameters: numberOfReplicas: "2" staleReplicaTimeout: "30" fsType: "xfs" dataLocality: "best-effort" diskSelector: "hdd"