actualizando rook ceph

This commit is contained in:
2025-07-24 21:50:34 +02:00
parent 9af70916aa
commit 2de1cc2bc7
2 changed files with 62 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
# Despliegue de Rook-Ceph en clúster K3s (SUSE) con discos locales (Bluestore) # Despliegue de Rook-Ceph en clúster K3s (SUSE) con discos locales (Bluestore)
Esta guía describe cómo desplegar un clúster Rook-Ceph sobre K3s en servidores SUSE con **discos locales** estándar (sin iSCSI). Se adapta a la arquitectura de 4 servidores: `srvfkvm1`, `srvfkvm2`, `srvfkvm3`, `srvfkvm4`, cada uno con 6 discos de \~900GB. Esta guía describe cómo desplegar un clúster Rook-Ceph sobre K3s en servidores SUSE con **discos locales** estándar (sin iSCSI). Se adapta a la arquitectura de 4 servidores: `srvfkvm1`, `srvfkvm2`, `srvfkvm3`, `srvfkvm4`, cada uno con 6 discos de \~900GB y una red de almacenamiento dedicada en la VLAN 30 (`192.168.3.0/24`).
--- ---
@@ -10,6 +10,7 @@ Esta guía describe cómo desplegar un clúster Rook-Ceph sobre K3s en servidore
* Cada nodo con 6 discos locales dedicados para Ceph (`/dev/sdj` a `/dev/sdo` en cada servidor) * Cada nodo con 6 discos locales dedicados para Ceph (`/dev/sdj` a `/dev/sdo` en cada servidor)
* K3s y `kubectl` funcionando y configurado * K3s y `kubectl` funcionando y configurado
* Acceso completo a Internet desde todos los nodos * Acceso completo a Internet desde todos los nodos
* Cada nodo debe tener una IP fija en `192.168.3.0/24` (VLAN 30) usada exclusivamente para almacenamiento
--- ---
@@ -25,7 +26,26 @@ lsblk | grep sd[j-o]
--- ---
## 3. Crear namespace y CRDs de Rook-Ceph ## 3. Configurar el firewall para red de almacenamiento (VLAN 30)
Asumiendo que tu interfaz de red para la VLAN 30 se llama `vlan30`, añádela a la zona `trusted` para permitir el tráfico de Ceph:
```bash
sudo firewall-cmd --zone=trusted --add-interface=vlan30 --permanent
sudo firewall-cmd --reload
```
Puedes verificar:
```bash
sudo firewall-cmd --list-all --zone=trusted
```
Deberías ver `interfaces: vlan30` listada.
---
## 4. Crear namespace y CRDs de Rook-Ceph
```bash ```bash
kubectl create namespace rook-ceph kubectl create namespace rook-ceph
@@ -41,7 +61,7 @@ kubectl apply -f common.yaml
--- ---
## 4. Desplegar el operador Rook-Ceph ## 5. Desplegar el operador Rook-Ceph
```bash ```bash
kubectl apply -f operator.yaml kubectl apply -f operator.yaml
@@ -49,7 +69,7 @@ kubectl apply -f operator.yaml
--- ---
## 5. Crear el clúster Ceph con discos locales ## 6. Crear el clúster Ceph con discos locales
Crea un archivo `ceph-cluster.yaml` con el siguiente contenido (ajusta nombres/discos según corresponda): Crea un archivo `ceph-cluster.yaml` con el siguiente contenido (ajusta nombres/discos según corresponda):
@@ -63,6 +83,10 @@ spec:
cephVersion: cephVersion:
image: quay.io/ceph/ceph:v18 image: quay.io/ceph/ceph:v18
dataDirHostPath: /var/lib/rook dataDirHostPath: /var/lib/rook
network:
connections:
clusterNetwork: "192.168.3.0/24"
publicNetwork: "192.168.3.0/24"
mon: mon:
count: 3 count: 3
allowMultiplePerNode: false allowMultiplePerNode: false
@@ -116,7 +140,7 @@ kubectl apply -f ceph-cluster.yaml
--- ---
## 6. Verifica el despliegue de Ceph ## 7. Verifica el despliegue de Ceph
```bash ```bash
kubectl -n rook-ceph get pods kubectl -n rook-ceph get pods
@@ -133,7 +157,7 @@ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status
--- ---
## 7. Crear CephBlockPool y StorageClass (replica:2) ## 8. Crear CephBlockPool y StorageClass (replica:4)
**ceph-blockpool.yaml:** **ceph-blockpool.yaml:**
@@ -141,12 +165,12 @@ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status
apiVersion: ceph.rook.io/v1 apiVersion: ceph.rook.io/v1
kind: CephBlockPool kind: CephBlockPool
metadata: metadata:
name: replicado-2x name: replicado-4x
namespace: rook-ceph namespace: rook-ceph
spec: spec:
failureDomain: host failureDomain: host
replicated: replicated:
size: 2 size: 4
``` ```
**ceph-storageclass.yaml:** **ceph-storageclass.yaml:**
@@ -155,11 +179,11 @@ spec:
apiVersion: storage.k8s.io/v1 apiVersion: storage.k8s.io/v1
kind: StorageClass kind: StorageClass
metadata: metadata:
name: ceph-rbd-replica2 name: ceph-rbd-replica4
provisioner: rook-ceph.rbd.csi.ceph.com provisioner: rook-ceph.rbd.csi.ceph.com
parameters: parameters:
clusterID: rook-ceph clusterID: rook-ceph
pool: replicado-2x pool: replicado-4x
imageFormat: "2" imageFormat: "2"
imageFeatures: layering imageFeatures: layering
csi.storage.k8s.io/fstype: ext4 csi.storage.k8s.io/fstype: ext4
@@ -178,7 +202,34 @@ kubectl apply -f ceph-storageclass.yaml
--- ---
## 8. Accede al Ceph Dashboard ## 9. Exponer el dashboard de Ceph
Crea el siguiente servicio `dashboard-service.yaml` para exponer el Dashboard vía `NodePort`:
```yaml
apiVersion: v1
kind: Service
metadata:
name: rook-ceph-mgr-dashboard
namespace: rook-ceph
spec:
type: NodePort
ports:
- port: 8443
targetPort: 8443
protocol: TCP
name: https-dashboard
selector:
app: rook-ceph-mgr
```
Aplica el manifiesto:
```bash
kubectl apply -f dashboard-service.yaml
```
> Cuando esté disponible una capa de ingress con TLS (por ejemplo cert-manager + ingress-nginx), se recomienda eliminar este `NodePort` y crear un `Ingress` con dominio y certificado TLS.
Obtén el puerto del dashboard: Obtén el puerto del dashboard:
@@ -203,4 +254,3 @@ Contraseña: (la anterior)
--- ---
# Clúster Rook-Ceph listo para producción con discos locales y réplica cruzada en 4 nodos.

Binary file not shown.