En esta página, se describe cómo configurar el almacenamiento conectado de Distributed Cloud, lo que incluye lo siguiente:
Configura Distributed Cloud Connected para Symcloud Storage
De forma predeterminada, las cargas de trabajo que se ejecutan en un nodo de rack conectado a Google Distributed Cloud no pueden acceder al almacenamiento local de otro nodo de rack conectado a Distributed Cloud. Sin embargo, puedes configurar los racks conectados de Distributed Cloud para que usen Rakuten Symcloud Storage, que es una solución de terceros que actúa como una capa de abstracción de almacenamiento local en cada nodo conectado de Distributed Cloud y hace que su almacenamiento local esté disponible para las cargas de trabajo que se ejecutan en otros nodos conectados de Distributed Cloud. Symcloud Storage es la opción de almacenamiento predeterminada y única en los servidores conectados de Google Distributed Cloud.
Symcloud Storage se implementa desde Google Cloud Marketplace y está sujeto a las condiciones que se indican allí. Google proporciona asistencia limitada para usar Symcloud Storage con Distributed Cloud conectado y puede contratar al proveedor externo para obtener asistencia. Las actualizaciones de software de Symcloud Storage se incluyen en las actualizaciones de software conectadas de Distributed Cloud.
Esta versión de Distributed Cloud Connected se envía con Symcloud Storage 5.4.10 y es compatible con él. En esta versión de Distributed Cloud Connected, no se admite ninguna otra versión de Symcloud Storage.
Clases de almacenamiento de Symcloud
En esta sección, se describen las clases de almacenamiento que Symcloud Storage puede habilitar en tu clúster conectado a Distributed Cloud. Symcloud Storage en Distributed Cloud Connected 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 Cómo usar 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 creación de instancias 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 igual a robin, excepto que el volumen persistente se crea inmediatamente después de crear la reclamación de volumen persistente correspondiente. En el siguiente ejemplo, se ilustra la creación de instancias 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 creación de instancias 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 conectado de Distributed Cloud de destino.
- Crea el clúster conectado de Distributed Cloud de destino.
- Configura tu red de Distributed Cloud para que los Pods del clúster conectado de Distributed Cloud de destino puedan acceder al centro de datos Google Cloud .
- Vincula cada volumen persistente
local-blocken cada nodo de Distributed Cloud que no quieras que se abstraiga con Symcloud Storage. Si desvinculas un volumen persistentelocal-blockvinculado, la instalación de Symcloud Storage borrará el contenido de ese volumen persistente. Para obtener instrucciones, consulta Vinculación en la documentación de Kubernetes.
Instala Symcloud Storage en un nodo de Distributed Cloud conectado
Para instalar Symcloud Storage en un nodo conectado de Distributed Cloud, completa los siguientes pasos:
Usa el siguiente comando para aplicar la licencia de Symcloud Storage a tu clúster. Reemplaza
LICENSE_FILEpor la ruta de acceso completa y el nombre del archivo de licencia de Symcloud Storage.kubectl apply -f LICENSE_FILE -n robin-admin
Usa el siguiente comando para verificar el estado del servicio
RobinClustery todos los nodos de Symcloud Storage: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.
Configura Symcloud Storage como la clase de almacenamiento predeterminada
Usa el siguiente comando para establecer Symcloud Storage como la clase de almacenamiento predeterminada en tu clúster conectado de Distributed Cloud. Reemplaza STORAGE_CLASS por una de las clases de Symcloud Storage.
kubectl patch storageclass STORAGE_CLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Para obtener más información sobre cómo configurar 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 para usar las clases de Symcloud Storage y configurar el almacenamiento abstracto para tus cargas de trabajo conectadas a Distributed Cloud. Para obtener más detalles sobre la configuración de volúmenes de Symcloud Storage, consulta Cómo usar Robin CNS en Kubernetes.
Configura un volumen ext4 RWO en modo de sistema de archivos
En el siguiente ejemplo, se ilustra cómo configurar un reclamo 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 Symcloud Storage.
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 un reclamo 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 con LZ4 de Symcloud Storage existente con anotaciones.
Reemplaza STORAGE_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 muestra cómo modificar la configuración de un volumen de RW de Symcloud Storage existente con el sistema de archivos xfs a través de anotaciones.
Reemplaza STORAGE_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 Symcloud Storage
Symcloud Storage proporciona un cliente de interfaz de línea de comandos (CLI) que puedes usar para administrar tu configuración de Symcloud Storage. Para configurar el cliente en tu clúster conectado de Distributed Cloud, completa los siguientes pasos:
Obtén la ruta de acceso a la imagen de Symcloud Storage que usa la instancia del servicio
RobinClusterimplementada en tu clúster conectado de Distributed Cloud y configura 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 al repositorio y el nombre de la imagen que obtuviste en el paso 1.Aplica el recurso
robinclien tu clúster conectado de Distributed Cloud.Durante la instalación inicial, Symcloud Storage 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 de Symcloud Storage
Cuando usas Symcloud Storage con Distributed Cloud conectado, solo puedes lograr una alta disponibilidad si tu clúster de Distributed Cloud conectado consta de tres o más nodos de Distributed Cloud conectado.
Cómo quitar nodos que usan Symcloud Storage de un clúster
Las réplicas de volúmenes de Symcloud Storage se almacenan en nodos de trabajadores dentro de tu clúster conectado de Distributed Cloud. Si quitas un nodo del clúster, los datos del volumen de Symcloud Storage almacenados en ese nodo dejarán de estar disponibles. Para evitarlo, debes realizar una de las siguientes acciones:
Si vas a desmantelar todo el clúster, quita las cargas de trabajo y sus volúmenes persistentes de Symcloud Storage correspondientes antes de desmantelar 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 Cómo evacuar 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 en disco físico. Cada esquema de almacenamiento tiene un nombre único que lo identifica.
Para crear un esquema de almacenamiento local nuevo 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 a Google que lo borre y, luego, solicitar la creación de uno nuevo para reemplazarlo.
Cómo definir 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 como un volumen local de Linux en el disco local.
- Modo: Puedes configurar el volumen almacenado en la partición como un volumen de bloques o un volumen del sistema de archivos. En el caso de las particiones de volúmenes persistentes, 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 asistencia de Google y proporciona el tamaño, el tipo, el modo y, de manera opcional, los puntos de vinculación y de montaje para cada partición que desees crear en el esquema.
Cuando recibimos tu solicitud, ejecutamos una serie de pruebas para garantizar la solidez del esquema y, luego, lo creamos en tu clúster conectado de Distributed Cloud.
Esquemas de almacenamiento local predeterminados
Distributed Cloud Connected se entrega 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 connected crea las particiones definidas en tu esquema de almacenamiento local cuando se crea correctamente el clúster o el grupo de nodos.