Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
Se aplica a SUSE Enterprise Storage 6

13 SUSE Enterprise Storage 6 sobre clúster de Kubernetes de SUSE CaaS Platform 4 Edit source

Aviso
Aviso: tecnología en fase preliminar

Ejecutar clústeres de Ceph en contenedores en SUSE CaaS Platform es una tecnología en fase preliminar. No realice la distribución en un clúster de Kubernetes de producción.

En este capítulo se describe cómo distribuir SUSE Enterprise Storage 6 en contenedores sobre el clúster de Kubernetes de SUSE CaaS Platform 4.

13.1 Observaciones Edit source

Antes de iniciar la distribución, tenga en cuenta los puntos siguientes:

  • Para ejecutar Ceph en Kubernetes, SUSE Enterprise Storage 6 utiliza un proyecto de fases anteriores denominado Rook (https://rook.io/).

  • Dependiendo de la configuración, Rook puede consumir todos los discos sin utilizar de todos los nodos de un clúster de Kubernetes.

  • La configuración requiere contenedores con privilegios.

13.2 Requisitos previos Edit source

Antes de iniciar la distribución, debe tener lo siguiente:

  • Un clúster de SUSE CaaS Platform 4 en ejecución.

  • Nodos de trabajo de SUSE CaaS Platform 4 con varios discos adicionales conectados como almacenamiento para el clúster de Ceph.

13.3 Obtención de manifiestos de Rook Edit source

El orquestador Rook utiliza archivos de configuración en formato YAML denominados manifiestos. Los manifiestos que se necesitan están incluidos en el paquete RPM rook-k8s-yaml. Para instalarlo, ejecute:

root # zypper install rook-k8s-yaml

13.4 Instalación Edit source

Rook-Ceph incluye dos componentes principales: el "operador" que es ejecutado por Kubernetes y permite la creación de clústeres de Ceph, y el propio "clúster" de Ceph que es creado y administrado parcialmente por el operador.

13.4.1 Configuración Edit source

13.4.1.1 Configuración global Edit source

Los manifiestos utilizados en esta configuración instalan todos los componentes de Rook y Ceph en el espacio de nombres "rook-ceph". Si necesita cambiarlo, adopte en consecuencia todas las referencias al espacio de nombres en los manifiestos de Kubernetes.

Dependiendo de las características de Rook que tenga previstas usar, modifique la configuración de "Política de seguridad de pods" en common.yaml para limitar los requisitos de seguridad de Rook. Consulte los comentarios del archivo de manifiesto.

13.4.1.2 Configuración del operador Edit source

El manifiesto operator.yaml configura el operador de Rook. Por lo general, no es necesario efectuar ningún cambio. Encontrará más información en los comentarios del archivo de manifiesto.

13.4.1.3 Configuración del clúster de Ceph Edit source

El manifiesto cluster.yaml es el responsable de configurar el clúster de Ceph actual que se ejecutará en Kubernetes. Encontrará una descripción detallada de todas las opciones disponibles en la documentación de Rook en https://rook.io/docs/rook/v1.0/ceph-cluster-crd.html.

Por defecto, Rook está configurado para utilizar todos los nodos que no están contaminados con node-role.kubernetes.io/master:NoSchedule y aceptará los ajustes de colocación configurados (consulte https://rook.io/docs/rook/v1.0/ceph-cluster-crd.html#placement-configuration-settings). En el ejemplo siguiente, se inhabilita este comportamiento y solo se utilizan los nodos mostrados explícitamente en la sección de nodos:

storage:
  useAllNodes: false
  nodes:
    - name: caasp4-worker-0
    - name: caasp4-worker-1
    - name: caasp4-worker-2
Nota
Nota

Por defecto, Rook está configurado para usar todos los discos libres y vacíos de cada nodo para su uso como almacenamiento de Ceph.

13.4.1.4 Documentación Edit source

13.4.2 Creación del operador de Rook Edit source

Para instalar los componentes comunes de Rook-Ceph, las funciones CSI y el operador Rook-Ceph, ejecute el comando siguiente en el nodo master de SUSE CaaS Platform:

root # kubectl apply -f common.yaml -f operator.yaml

common.yaml creará el espacio de nombres "rook-ceph"; definiciones de recursos personalizados de Ceph (CRD, consulte https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) para que Kubernetes tenga constancia de los objetos de Ceph (por ejemplo, "CephCluster"), y las funciones RBAC y las directivas de seguridad de pods (consulte https://kubernetes.io/docs/concepts/policy/pod-security-policy/), que son necesarias para permitir que Rook gestione los recursos específicos del clúster.

Sugerencia
Sugerencia: uso de hostNetwork y hostPorts

Si en la definición de recursos del clúster se usa hostNetwork: true es necesario usar hostNetwork. También es necesario usar hostPorts en PodSecurityPolicy.

Verifique la instalación ejecutando kubectl get pods -n rook-ceph en el nodo master de SUSE CaaS Platform, por ejemplo:

root # kubectl get pods -n rook-ceph
NAME                                     READY   STATUS      RESTARTS   AGE
rook-ceph-agent-57c9j                    1/1     Running     0          22h
rook-ceph-agent-b9j4x                    1/1     Running     0          22h
rook-ceph-operator-cf6fb96-lhbj7         1/1     Running     0          22h
rook-discover-mb8gv                      1/1     Running     0          22h
rook-discover-tztz4                      1/1     Running     0          22h

13.4.3 Creación del clúster de Ceph Edit source

Después de modificar cluster.yaml según sus necesidades, puede crear el clúster de Ceph. Ejecute el comando siguiente en el nodo master de SUSE CaaS Platform:

root # kubectl apply -f cluster.yaml

Observe el espacio de nombres "rook-ceph" para comprobar qué clúster de Ceph se va a crear. Verá tantos monitores Ceph Monitor como haya configurados en el manifiesto cluster.yaml (el valor por defecto es 3), una instancia de Ceph Manager y tantos daemons Ceph OSD como discos libres tenga.

Sugerencia
Sugerencia: pods OSD temporales

Al arrancar el clúster de Ceph, verá ejecutarse algunos pods con el nombre rook-ceph-osd-prepare-NOMBRE-NODO durante un tiempo que, después, terminarán con el estado "Completado". Como su nombre indica, estos pods sirven para provisionar los Ceph OSD. No se suprimen para que pueda inspeccionar sus registros cuando terminen. Por ejemplo:

root # kubectl get pods --namespace rook-ceph
NAME                                         READY  STATUS     RESTARTS  AGE
rook-ceph-agent-57c9j                        1/1    Running    0         22h
rook-ceph-agent-b9j4x                        1/1    Running    0         22h
rook-ceph-mgr-a-6d48564b84-k7dft             1/1    Running    0         22h
rook-ceph-mon-a-cc44b479-5qvdb               1/1    Running    0         22h
rook-ceph-mon-b-6c6565ff48-gm9wz             1/1    Running    0         22h
rook-ceph-operator-cf6fb96-lhbj7             1/1    Running    0         22h
rook-ceph-osd-0-57bf997cbd-4wspg             1/1    Running    0         22h
rook-ceph-osd-1-54cf468bf8-z8jhp             1/1    Running    0         22h
rook-ceph-osd-prepare-caasp4-worker-0-f2tmw  0/2    Completed  0         9m35s
rook-ceph-osd-prepare-caasp4-worker-1-qsfhz  0/2    Completed  0         9m33s
rook-ceph-tools-76c7d559b6-64rkw             1/1    Running    0         22h
rook-discover-mb8gv                          1/1    Running    0         22h
rook-discover-tztz4                          1/1    Running    0         22h

13.5 Uso de Rook como almacenamiento para la carga de trabajo de Kubernetes Edit source

Rook permite utilizar tres tipos diferentes de almacenamiento:

Almacenamiento de objeto

El almacenamiento de objeto expone una API de S3 al clúster de almacenamiento para que las aplicaciones coloquen y obtengan datos. Consulte https://rook.io/docs/rook/v1.0/ceph-object.html para obtener una descripción detallada.

Sistema de archivos compartido

Es posible montar un sistema de archivos compartido con permisos de lectura y escritura desde varios pods. Esto resulta útil para las aplicaciones que se agrupan en clúster mediante un sistema de archivos compartido. Consulte https://rook.io/docs/rook/v1.0/ceph-filesystem.html para obtener una descripción detallada.

Almacenamiento de bloques

El almacenamiento de bloques permite montar el almacenamiento en un solo pod. Consulte https://rook.io/docs/rook/v1.0/ceph-block.html para obtener una descripción detallada.

13.6 Desinstalación de Rook Edit source

Para desinstalar Rook, siga estos pasos:

  1. Suprima todas las aplicaciones de Kubernetes que consuman almacenamiento de Rook.

  2. Suprima todos los objetos, archivos o artefactos de almacenamiento de bloques que haya creado siguiendo las instrucciones de la Sección 13.5, “Uso de Rook como almacenamiento para la carga de trabajo de Kubernetes”.

  3. Suprima el clúster de Ceph, el operador y los recursos relacionados:

    root # kubectl delete -f cluster.yaml
    root # kubectl delete -f operator.yaml
    root # kubectl delete -f common.yaml
  4. Suprima los datos de los hosts:

    root # rm -rf /var/lib/rook
  5. Si fuera necesario, limpie los discos utilizados por Rook. Consulte https://rook.io/docs/rook/master/ceph-teardown.html para obtener más información.