En esta página, se describe cómo configurar el almacenamiento conectado de Distributed Cloud, incluido lo siguiente:
Configura Distributed Cloud conectado para el almacenamiento de Symcloud
Los nodos conectados de Distributed Cloud no exponen su almacenamiento local directamente a tus cargas de trabajo. En cambio, Distributed Cloud conectado usa el almacenamiento de Symcloud de Rakuten, que es una solución de terceros que actúa como una capa de abstracción de almacenamiento local que se ejecuta en cada nodo conectado de Distributed Cloud y hace que su almacenamiento local esté disponible para las cargas de trabajo que se ejecutan en todos los nodos conectados de Distributed Cloud en un clúster.
El almacenamiento de Symcloud se implementa desde Google Cloud Marketplace y está sujeto a las condiciones que se indican allí. Google proporciona asistencia limitada para usar el almacenamiento de Symcloud con Distributed Cloud conectado y puede comunicarse con el proveedor externo para obtener asistencia. Las actualizaciones de software para el almacenamiento de Symcloud se incluyen en las actualizaciones de software de Distributed Cloud conectado.
Esta versión de Distributed Cloud conectado se envía con el almacenamiento de Symcloud 5.4.18 y lo admite. No se admite ninguna otra versión del almacenamiento de Symcloud en esta versión de Distributed Cloud conectado.
Obtén una licencia de almacenamiento de Symcloud
Debes obtener una licencia de almacenamiento de Symcloud en formato YAML de Google Cloud Marketplace:
Clases de almacenamiento de Symcloud
En esta sección, se describen las clases de almacenamiento que el almacenamiento de Symcloud puede habilitar en tu clúster conectado de Distributed Cloud. El almacenamiento de Symcloud en Distributed Cloud conectado no admite la clase de almacenamiento robin-rwx ni ningún volumen de modo de sistema de archivos RWX configurado de forma personalizada.
Para obtener más información sobre las clases de almacenamiento de Symcloud, consulta Usa Robin CNS en Kubernetes.
Clase de almacenamiento robin
La clase de almacenamiento robin es una clase de almacenamiento básica de lectura y escritura única (RWO). En el siguiente ejemplo, se ilustra la instancia de la clase:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
Clase de almacenamiento robin-immediate
La clase de almacenamiento robin-immediate es la misma que robin, excepto que el
volumen persistente se crea inmediatamente después de crear la
solicitud de volumen persistente correspondiente. En el siguiente ejemplo, se ilustra la instancia de la clase:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin-immediate
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
Clase de almacenamiento robin-repl-3
robin-repl-3 es una clase de almacenamiento RWO con tres réplicas que abarcan varios nodos de Distributed Cloud. En el siguiente ejemplo, se ilustra la instancia de la clase:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin-repl-3
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
replication: "3"
faultdomain: host
Requisitos previos
Antes de comenzar, completa los siguientes pasos:
- Configura el registro y la supervisión para el proyecto de Distributed Cloud conectado de destino.
- Crea el clúster de Distributed Cloud conectado de destino.
- Configura tu red de Distributed Cloud para que los Pods en el clúster de Distributed Cloud conectado de destino puedan llegar al Google Cloud centro de datos.
- Vincula cada volumen persistente
local-blocken cada nodo de Distributed Cloud que no quieras que el almacenamiento de Symcloud abstraiga. Si desvinculas un volumen persistentelocal-blockvinculado, la instalación del almacenamiento de Symcloud borra el contenido de ese volumen persistente. Para obtener instrucciones, consulta Vinculación en la documentación de Kubernetes.
Instala el almacenamiento de Symcloud en un nodo conectado de Distributed Cloud
Para instalar el almacenamiento de Symcloud en un nodo conectado de Distributed Cloud, completa los siguientes pasos:
Usa el siguiente comando para aplicar la licencia de almacenamiento de Symcloud a tu clúster. Reemplaza
LICENSE_FILEpor la ruta de acceso completa y el nombre del archivo de licencia de almacenamiento de Symcloud.kubectl apply -f LICENSE_FILE -n robin-admin
Usa el siguiente comando para verificar el estado del servicio
RobinClustery todos los nodos de almacenamiento de Symcloud:kubectl describe robinclusters -n robinio
El comando muestra un resultado similar al siguiente:
[...] Status: [...] Phase: Ready robin_node_status: [...] Status: Ready [...] Status: Ready [...] Status: Ready [...]El estado esperado para el servicio y los nodos es
Ready.
Establece el almacenamiento de Symcloud como la clase de almacenamiento predeterminada
Usa el siguiente comando para establecer el almacenamiento de Symcloud como la clase de almacenamiento predeterminada en tu clúster conectado de Distributed Cloud. Reemplaza
STORAGE_CLASS por una de las
clases de almacenamiento de Symcloud.
kubectl patch storageclass STORAGE_CLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Para obtener más información sobre cómo establecer la clase de almacenamiento predeterminada, consulta Cambia el recurso StorageClass predeterminado en la documentación de Kubernetes.
Configura volúmenes de almacenamiento de Symcloud abstraídos para cargas de trabajo
En esta sección, se proporcionan ejemplos de cómo usar las clases de almacenamiento de Symcloud para configurar el almacenamiento abstraído para tus cargas de trabajo conectadas de Distributed Cloud. Para obtener más detalles sobre la configuración de los volúmenes de almacenamiento de Symcloud, consulta Usa Robin CNS en Kubernetes.
Configura un volumen ext4 RWO en modo de sistema de archivos
En el siguiente ejemplo, se ilustra cómo configurar una solicitud de volumen persistente para un volumen RWO en modo de sistema de archivos con el sistema de archivos ext4. Reemplaza
STORAGE_CLASS por una de las
clases de almacenamiento de Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-fs-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
Configura un volumen RWO en modo de bloque
En el siguiente ejemplo, se ilustra cómo configurar una solicitud de volumen persistente para un volumen RWO en modo de bloque. Reemplaza STORAGE_CLASS por una
de las clases de almacenamiento de Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-block-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
volumeMode: Block
Modifica la configuración de un volumen existente
En el siguiente ejemplo, se ilustra cómo modificar la configuración de un volumen RWO comprimido LZ4 de almacenamiento de Symcloud existente mediante anotaciones.
ReemplazaSTORAGE_CLASS por una de las clases de almacenamiento de Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: compressed-rwo-fs-pvc
annotations:
robin.io/compression: LZ4
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
En el siguiente ejemplo, se ilustra cómo modificar la configuración de un volumen RWO de almacenamiento de Symcloud existente con el sistema de archivos xfs mediante anotaciones.
ReemplazaSTORAGE_CLASS por una de las clases de almacenamiento de Symcloud.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-xfs-pvc
annotations:
robin.io/fstype: xfs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
Configura el cliente de la CLI de almacenamiento de Symcloud
El almacenamiento de Symcloud proporciona un cliente de interfaz de línea de comandos (CLI) que puedes usar para administrar tu configuración de almacenamiento de Symcloud. Para configurar el cliente en tu clúster conectado de Distributed Cloud, completa los siguientes pasos:
Obtén la ruta de acceso de la imagen de almacenamiento de Symcloud que usa la instancia de servicio
RobinClusterimplementada en tu clúster conectado de Distributed Cloud y establece tus variables de entorno de la siguiente manera:image_robin=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_robin}') image_registry_path=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_registry_path}') ROBIN_CNS_IMAGE="$image_registry_path/$image_robin"Crea un recurso
robinclicon el siguiente contenido:kind: Deployment apiVersion: apps/v1 metadata: name: robincli namespace: default labels: name: robincli spec: replicas: 1 selector: matchLabels: name: robincli template: metadata: annotations: product: robin labels: name: robincli spec: containers: - name: robincli image: ROBIN_CNS_IMAGE workingDir: /root command: ["/bin/bash","-c","mkdir -p /root/.robin; ln -s -t /usr/lib/python3.7/site-packages/ /opt/robin/current/python3/site-packages/robincli /opt/robin/current/python3/site-packages/stormgr_def.py /opt/robin/current/python3/site-packages/stormgr_lib.py; /opt/robin/current/bin/robin client add-context robin-master.robinio --set-current; while true; do sleep 10000; done"] resources: requests: memory: "10Mi" cpu: "100m"Reemplaza
ROBIN_CNS_IMAGEpor la ruta de acceso completa del repositorio y el nombre de la imagen que obtuviste en el paso 1.Aplica el recurso
robinclia tu clúster conectado de Distributed Cloud.Tras la instalación inicial, el almacenamiento de Symcloud genera un secreto
default-admin-useren el espacio de nombresrobiniocon una contraseña aleatoria. Usa los siguientes comandos para obtener estas credenciales de acceso:Obtén el nombre de usuario:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -dObtén la contraseña:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
Accede al Pod recién creado y ejecuta el cliente:
kubectl exec -it robincli -- bash
Limitaciones del almacenamiento de Symcloud
Cuando usas el almacenamiento de Symcloud con Distributed Cloud conectado, solo puedes lograr una alta disponibilidad si tu clúster conectado de Distributed Cloud consta de tres o más nodos conectados de Distributed Cloud.
Quita nodos que usan el almacenamiento de Symcloud de un clúster
Las réplicas de volumen de almacenamiento de Symcloud se almacenan en nodos trabajadores dentro de tu clúster conectado de Distributed Cloud. Si quitas un nodo del clúster, los datos del volumen de almacenamiento de Symcloud almacenados en ese nodo dejan de estar disponibles. Para evitar esto, debes hacer una de las siguientes acciones:
Si vas a desarmar todo el clúster, quita las cargas de trabajo y sus volúmenes persistentes de almacenamiento de Symcloud correspondientes antes de desarmar el clúster.
Si quitas nodos específicos del clúster, debes migrar los datos de la carga de trabajo almacenados en esos nodos antes de quitarlos del clúster. Para obtener instrucciones, consulta Evacua volúmenes de un disco.
Configura esquemas de almacenamiento local
Un esquema de almacenamiento es una agrupación lógica de una o más particiones. Cada partición es una unidad de almacenamiento lógicamente independiente. Las particiones se crean en tu clúster de forma secuencial hasta que se agota el espacio físico en el disco. Cada esquema de almacenamiento tiene un nombre único que lo identifica.
Para crear un nuevo esquema de almacenamiento local para tu clúster conectado de Distributed Cloud, debes solicitarlo a Google. Una vez que probemos el esquema y lo creemos en tu clúster, podrás aplicarlo con la CLI de gcloud.
No puedes modificar un esquema después de que se aplica a un clúster. Para cambiar un esquema existente, debes solicitar la eliminación del esquema existente a Google y, luego, solicitar la creación de un esquema nuevo para reemplazarlo.
Define particiones para un esquema de almacenamiento local
Antes de solicitar un esquema de almacenamiento local, primero debes definir las particiones para ese esquema.
Una partición tiene las siguientes propiedades:
- Tamaño. Puedes especificar un tamaño de partición en bytes binarios o hacer que use todo el espacio restante en el disco local.
- Tipo. Puedes configurar una partición como un volumen persistente (PV) de Kubernetes o un volumen local de Linux en el disco local.
- Modo. Puedes configurar el volumen almacenado en la partición como un volumen de bloque o un volumen de sistema de archivos. Para las particiones de volumen persistente, la clase de almacenamiento de la partición es
local-blockolocal-disks, respectivamente. Para las particiones de volumen local, puedes especificar los puntos de vinculación y activación para los sistemas de archivos contenidos.
Solicita un esquema de almacenamiento local
Para solicitar un nuevo esquema de almacenamiento local para tu clúster conectado de Distributed Cloud, comunícate con el equipo de Atención al Cliente de Google y proporciona el tamaño, el tipo, el modo y, de manera opcional, los puntos de activación y vinculación para cada partición que deseas crear en el esquema.
Cuando recibamos tu solicitud, ejecutaremos una serie de pruebas para garantizar la solidez del esquema y, luego, lo crearemos en tu clúster conectado de Distributed Cloud.
Esquemas de almacenamiento local predeterminados
Distributed Cloud conectado se envía con los siguientes esquemas de almacenamiento local predeterminados:
default_control_plane_node. Este esquema define las siguientes particiones:- Una partición de volumen local de 100 GB en modo de sistema de archivos
- Una partición de volumen persistente en modo de bloque que ocupa el espacio libre restante en el disco
default_worker_node. Este esquema define una partición de volumen persistente de 410 GB en modo de bloque.
Aplica un esquema de almacenamiento local a un clúster
Para aplicar un esquema de almacenamiento local a tu clúster conectado de Distributed Cloud, haz una de las siguientes acciones:
Para aplicar un esquema de almacenamiento local a los nodos del plano de control del clúster, usa la marca
--control-plane-node-storage-schemacuando crees el clúster. Para obtener más información, consulta Crea un clúster.Para aplicar un esquema de almacenamiento local a los nodos trabajadores del clúster, usa
--node-storage-schemacuando crees un grupo de nodos para el clúster. Para obtener más información, consulta Crea un grupo de nodos.
Distributed Cloud conectado crea las particiones definidas en tu esquema de almacenamiento local cuando se crea correctamente el clúster o el grupo de nodos.