4.3 KiB
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.
1. Requisitos previos
- 4 nodos K3s funcionando:
SRVFKVM01
,SRVFKVM02
,SRVFKVM03
,SRVFKVM04
- Cada nodo con 6 discos locales dedicados para Ceph (
/dev/sdj
a/dev/sdo
en cada servidor) - K3s y
kubectl
funcionando y configurado - Acceso completo a Internet desde todos los nodos
2. Preparar los nodos SUSE (sólo discos locales)
No es necesario configurar iSCSI ni multipath. Asegúrate de que los discos están vacíos y sin particionar, o bien elimina las particiones creadas (Ceph las sobreescribirá).
Verifica los discos en cada nodo:
lsblk | grep sd[j-o]
3. Crear namespace y CRDs de Rook-Ceph
kubectl create namespace rook-ceph
# Clona el repositorio oficial de Rook
git clone https://github.com/rook/rook.git
cd rook/deploy/examples
# Aplica CRDs y recursos comunes
kubectl apply -f crds.yaml
kubectl apply -f common.yaml
4. Desplegar el operador Rook-Ceph
kubectl apply -f operator.yaml
5. Crear el clúster Ceph con discos locales
Crea un archivo ceph-cluster.yaml
con el siguiente contenido (ajusta nombres/discos según corresponda):
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
cephVersion:
image: quay.io/ceph/ceph:v18
dataDirHostPath: /var/lib/rook
mon:
count: 3
allowMultiplePerNode: false
dashboard:
enabled: true
storage:
useAllNodes: false
useAllDevices: false
nodes:
- name: SRVFKVM01
devices:
- name: /dev/sdj
- name: /dev/sdk
- name: /dev/sdl
- name: /dev/sdm
- name: /dev/sdn
- name: /dev/sdo
- name: SRVFKVM02
devices:
- name: /dev/sdj
- name: /dev/sdk
- name: /dev/sdl
- name: /dev/sdm
- name: /dev/sdn
- name: /dev/sdo
- name: SRVFKVM03
devices:
- name: /dev/sdj
- name: /dev/sdk
- name: /dev/sdl
- name: /dev/sdm
- name: /dev/sdn
- name: /dev/sdo
- name: SRVFKVM04
devices:
- name: /dev/sdj
- name: /dev/sdk
- name: /dev/sdl
- name: /dev/sdm
- name: /dev/sdn
- name: /dev/sdo
**Asegúrate de que los nombres de los nodos (
name:
) coinciden con el valor mostrado porkubectl get nodes
.
Aplica el manifiesto:
kubectl apply -f ceph-cluster.yaml
6. Verifica el despliegue de Ceph
kubectl -n rook-ceph get pods
- Espera a que los pods estén en estado
Running
.
Para comprobar el estado de Ceph:
# Primero espera a que el pod rook-ceph-tools esté disponible
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status
7. Crear CephBlockPool y StorageClass (replica:2)
ceph-blockpool.yaml:
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
name: replicado-2x
namespace: rook-ceph
spec:
failureDomain: host
replicated:
size: 2
ceph-storageclass.yaml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-rbd-replica2
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
clusterID: rook-ceph
pool: replicado-2x
imageFormat: "2"
imageFeatures: layering
csi.storage.k8s.io/fstype: ext4
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
- discard
Aplica ambos:
kubectl apply -f ceph-blockpool.yaml
kubectl apply -f ceph-storageclass.yaml
8. Accede al Ceph Dashboard
Obtén el puerto del dashboard:
kubectl -n rook-ceph get svc | grep dashboard
Obtén la contraseña:
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{.data.password}" | base64 -d
Accede en tu navegador a:
https://<IP_nodo>:<NodePort>
Usuario: admin
Contraseña: (la anterior)