docs: add piraeus/drbd to storage documentation

How-To install Piraeus on a Talos cluster

Signed-off-by: DJAlPee <DJAlPee@GitHub.com>
Signed-off-by: Noel Georgi <git@frezbo.dev>
This commit is contained in:
DJAlPee 2023-05-24 21:55:32 +02:00 committed by Noel Georgi
parent a982cabe70
commit adce651034
No known key found for this signature in database
GPG Key ID: 21A9F444075C9E36
4 changed files with 235 additions and 2 deletions

View File

@ -5,7 +5,7 @@ aliases:
- ../../guides/storage
---
In Kubernetes, using storage in the right way is well-facilitated by the API.
In Kubernetes, using storage in the right way is well-facilitated by the API.
However, unless you are running in a major public cloud, that API may not be hooked up to anything.
This frequently sends users down a rabbit hole of researching all the various options for storage backends for their platform, for Kubernetes, and for their workloads.
There are a _lot_ of options out there, and it can be fairly bewildering.
@ -107,6 +107,102 @@ talosctl -n <node ip> service kubelet restart
Continue setting up [Mayastor](https://mayastor.gitbook.io/introduction/quickstart/deploy-mayastor) using the official documentation.
### Piraeus / LINSTOR
* [Piraeus-Operator](https://piraeus.io/)
* [LINSTOR](https://linbit.com/drbd/)
* [DRBD Extension](https://github.com/siderolabs/extensions#storage)
#### Install Piraeus Operator V2 (recommended, when starting from scratch!)
There is already a how-to for Talos: [Link](https://github.com/piraeusdatastore/piraeus-operator/blob/v2/docs/how-to/talos.md)
#### Install Piraeus Operator V1
<!-- markdownlint-disable MD004 -->
<!-- markdownlint-disable MD007 -->
<!-- markdownlint-disable MD032 -->
<!-- markdownlint-disable MD025 -->
{{< tabpane lang="yaml" >}}
{{< tab header="Strategic merge patch" >}}
machine:
install:
extensions:
- image: ghcr.io/siderolabs/drbd:9.2.0-{{< release >}}
kernel:
modules:
- name: drbd
- name: drbd_transport_tcp
{{< /tab >}}
{{< tab header="JSON patch" >}}
- op: add
path: /machine/install/extensions/-
value:
- image: ghcr.io/siderolabs/drbd:9.2.0-{{< release >}}
- op: add
path: /machine/kernel/modules/-
value:
- name: drbd
- name: drbd_transport_tcp
{{< /tab >}}
{{< /tabpane >}}
```sh
# Apply config update on node
talosctl patch mc --patch-file install-drbd.yml
# Start upgrade of Talos with with current installed version to enable the extension
talosctl upgrade --image=ghcr.io/siderolabs/installer:{{< release >}}
# Create dedicated namespace for piraeus
kubectl create namespace piraeus
kubectl label ns piraeus pod-security.kubernetes.io/enforce=privileged
kubectl label ns piraeus pod-security.kubernetes.io/auth=privileged
kubectl label ns piraeus pod-security.kubernetes.io/warn=privileged
# Install Piraeus with Helm chart from GitHub repository
git clone --branch master https://github.com/piraeusdatastore/piraeus-operator.git
cd piraeus-operator
helm install piraeus-op ./charts/piraeus \
--namespace piraeus \
--set operator.satelliteSet.kernelModuleInjectionMode=None \ # Deprecated, but necessary!
--set etcd.enabled=false \
--set operator.controller.dbConnectionURL=k8s
```
#### Create first storage pool and PVC
Before proceeding, install linstor plugin for kubectl:
https://github.com/piraeusdatastore/kubectl-linstor
Or use [krew](https://krew.sigs.k8s.io/): `kubectl krew install linstor`
```sh
# Create device pool on a blank (no partitation table!) disk on node01
kubectl linstor physical-storage create-device-pool --pool-name nvme_lvm_pool LVM node01 /dev/nvme0n1 --storage-pool nvme_pool
```
piraeus-sc.yml
```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: simple-nvme
parameters:
csi.storage.k8s.io/fstype: xfs
linstor.csi.linbit.com/autoPlace: "3"
linstor.csi.linbit.com/storagePool: nvme_pool
provisioner: linstor.csi.linbit.com
volumeBindingMode: WaitForFirstConsumer
```
```sh
# Create storage class
kubectl apply -f piraeus-sc.yml
```
## NFS
NFS is an old pack animal long past its prime.

View File

@ -4,7 +4,7 @@ no_list: true
linkTitle: "Documentation"
cascade:
type: docs
lastRelease: v1.4.0
lastRelease: v1.4.4
kubernetesRelease: "1.27.1"
prevKubernetesRelease: "1.26.3"
theilaRelease: "v0.2.1"

View File

@ -120,6 +120,101 @@ talosctl -n <node ip> service kubelet restart
Continue setting up [Mayastor](https://mayastor.gitbook.io/introduction/quickstart/deploy-mayastor) using the official documentation.
### Piraeus / LINSTOR
* [Piraeus-Operator](https://piraeus.io/)
* [LINSTOR](https://linbit.com/drbd/)
* [DRBD Extension](https://github.com/siderolabs/extensions#storage)
#### Install Piraeus Operator V2 (recommended, when starting from scratch!)
There is already a how-to for Talos: [Link](https://github.com/piraeusdatastore/piraeus-operator/blob/v2/docs/how-to/talos.md)
#### Install Piraeus Operator V1
<!-- markdownlint-disable MD007 -->
<!-- markdownlint-disable MD032 -->
<!-- markdownlint-disable MD025 -->
{{< tabpane lang="yaml" >}}
{{< tab header="Strategic merge patch" >}}
machine:
install:
extensions:
- image: ghcr.io/siderolabs/drbd:9.2.2-{{< release >}}
kernel:
modules:
- name: drbd
- name: drbd_transport_tcp
{{< /tab >}}
{{< tab header="JSON patch" >}}
* op: add
path: /machine/install/extensions/-
value:
* image: ghcr.io/siderolabs/drbd:9.2.2-{{< release >}}
* op: add
path: /machine/kernel/modules/-
value:
* name: drbd
* name: drbd_transport_tcp
{{< /tab >}}
{{< /tabpane >}}
```sh
# Apply config update on node
talosctl patch mc --patch-file install-drbd.yml
# Start upgrade of Talos with with current installed version to enable the extension
talosctl upgrade --image=ghcr.io/siderolabs/installer:{{< release >}}
# Create dedicated namespace for piraeus
kubectl create namespace piraeus
kubectl label ns piraeus pod-security.kubernetes.io/enforce=privileged
kubectl label ns piraeus pod-security.kubernetes.io/auth=privileged
kubectl label ns piraeus pod-security.kubernetes.io/warn=privileged
# Install Piraeus with Helm chart from GitHub repository
git clone --branch master https://github.com/piraeusdatastore/piraeus-operator.git
cd piraeus-operator
helm install piraeus-op ./charts/piraeus \
--namespace piraeus \
--set operator.satelliteSet.kernelModuleInjectionMode=None \ # Deprecated, but necessary!
--set etcd.enabled=false \
--set operator.controller.dbConnectionURL=k8s
```
#### Create first storage pool and PVC
Before proceeding, install linstor plugin for kubectl:
https://github.com/piraeusdatastore/kubectl-linstor
Or use [krew](https://krew.sigs.k8s.io/): `kubectl krew install linstor`
```sh
# Create device pool on a blank (no partitation table!) disk on node01
kubectl linstor physical-storage create-device-pool --pool-name nvme_lvm_pool LVM node01 /dev/nvme0n1 --storage-pool nvme_pool
```
piraeus-sc.yml
```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: simple-nvme
parameters:
csi.storage.k8s.io/fstype: xfs
linstor.csi.linbit.com/autoPlace: "3"
linstor.csi.linbit.com/storagePool: nvme_pool
provisioner: linstor.csi.linbit.com
volumeBindingMode: WaitForFirstConsumer
```
```sh
# Create storage class
kubectl apply -f piraeus-sc.yml
```
## NFS
NFS is an old pack animal long past its prime.

View File

@ -120,6 +120,48 @@ talosctl -n <node ip> service kubelet restart
Continue setting up [Mayastor](https://mayastor.gitbook.io/introduction/quickstart/deploy-mayastor) using the official documentation.
### Piraeus / LINSTOR
* [Piraeus-Operator](https://piraeus.io/)
* [LINSTOR](https://linbit.com/drbd/)
* [DRBD Extension](https://github.com/siderolabs/extensions#storage)
#### Install Piraeus Operator V2
There is already a how-to for Talos: [Link](https://github.com/piraeusdatastore/piraeus-operator/blob/v2/docs/how-to/talos.md)
#### Create first storage pool and PVC
Before proceeding, install linstor plugin for kubectl:
https://github.com/piraeusdatastore/kubectl-linstor
Or use [krew](https://krew.sigs.k8s.io/): `kubectl krew install linstor`
```sh
# Create device pool on a blank (no partitation table!) disk on node01
kubectl linstor physical-storage create-device-pool --pool-name nvme_lvm_pool LVM node01 /dev/nvme0n1 --storage-pool nvme_pool
```
piraeus-sc.yml
```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: simple-nvme
parameters:
csi.storage.k8s.io/fstype: xfs
linstor.csi.linbit.com/autoPlace: "3"
linstor.csi.linbit.com/storagePool: nvme_pool
provisioner: linstor.csi.linbit.com
volumeBindingMode: WaitForFirstConsumer
```
```sh
# Create storage class
kubectl apply -f piraeus-sc.yml
```
## NFS
NFS is an old pack animal long past its prime.