Configurar una clase de almacenamiento
El "Objeto de Kubernetes StorageClass" identifica a un proveedor y le indica cómo aprovisionar volúmenes. Esta sección te muestra cómo configurar un objeto de Kubernetes StorageClass que especifica a Trident como el proveedor.
Crear un objeto StorageClass
Cuando creas un StorageClass para FSx for ONTAP, Trident creará automáticamente la configuración del backend.
|
|
Si quieres configurar manualmente el backend de almacenamiento, consulta la sección [create-a-kubernetes-storageclass-without-automatic-backend-configuration] para saber cómo crear el backend Trident y la clase de almacenamiento por separado. |
Especifica los parámetros requeridos StorageClass
Los siguientes tres parámetros deben definirse al crear un StorageClass:
| Parámetro | Requerido | Tipo | Descripción |
|---|---|---|---|
|
Sí |
cadena |
FSx para NetApp ONTAP filesystem ID |
|
Sí |
cadena |
Controlador de almacenamiento Trident (por ejemplo, |
|
Sí |
cadena |
Nombre del secreto de Kubernetes que contiene FSx for ONTAP credenciales |
Especifica parámetros opcionales
Puedes pasar parámetros opcionales de backend a través de StorageClass. Define todos los valores opcionales como cadenas en la sección StorageClass parameters. Para obtener una lista completa de los parámetros de backend, consulta: "Configuración del backend de FSx para NetApp ONTAP".
Ejemplo de archivos de configuración de StorageClass.
El siguiente ejemplo muestra un StorageClass que activa la configuración automática del backend.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-fsx-demo
annotations:
description: "Demo StorageClass for FSx for NetApp ONTAP"
provisioner: csi.trident.netapp.io
parameters:
fsxFilesystemID: "fs-0abc123"
storageDriverName: "ontap-nas"
credentialsName: trident-fsx-credentials
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
{
"apiVersion": "storage.k8s.io/v1",
"kind": "StorageClass",
"metadata": {
"name": "ontap-fsx-demo",
"annotations": {
"description": "Demo StorageClass for FSx for NetApp ONTAP"
}
},
"provisioner": "csi.trident.netapp.io",
"parameters": {
"fsxFilesystemID": "fs-0abc123",
"storageDriverName": "ontap-nas",
"credentialsName": "trident-fsx-credentials"
},
"allowVolumeExpansion": true,
"reclaimPolicy": "Delete",
"volumeBindingMode": "Immediate"
}
Crear el StorageClass
Una vez que hayas creado tu archivo de configuración, ejecuta el siguiente comando para crear la clase de almacenamiento.
kubectl create -f storage-class-ontapnas.yaml
Ahora deberías ver una clase de almacenamiento basic-csi tanto en Kubernetes como en Trident, y Trident debería haber descubierto los pools en el backend.
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
Después de aplicar StorageClass, Trident crea el backend automáticamente. Luego, puedes crear PersistentVolumeClaims que hacen referencia a este StorageClass.
Verifica el estado de la configuración del backend
Trident registra el resultado de la creación del backend en las anotaciones de StorageClass.
| Anotación | Descripción |
|---|---|
|
Resultado de la configuración ( |
|
Estado detallado o mensaje de error |
|
Nombre del recurso interno del configurador |
|
Indica que el StorageClass está gestionado por Trident |
|
Grupos de almacenamiento creados para este backend |
Para verificar el estado, ejecuta:
kubectl get storageclass ontap-fsx-demo -o yaml
Confirma que trident.netapp.io/configuratorStatus está configurado en Success. Si el valor es Failure, revisa trident.netapp.io/configuratorMessage para ver el error.
Añade sistemas de archivos FSxN adicionales
Si necesitas capacidad de almacenamiento adicional mientras sigues usando el mismo StorageClass, añade ID de sistemas de archivos FSxN adicionales.
Edita el StorageClass y añade la siguiente anotación:
metadata:
annotations:
trident.netapp.io/additionalFsxNFileSystemID: '["fs-xxxxxxxxxxxxxxxxxx"]'
Después de aplicar el cambio, Trident actualiza la configuración del backend y actualiza las anotaciones de StorageClass.
Consideraciones operativas y limitaciones
-
Eliminar un StorageClass que tiene la configuración automática de backend normalmente elimina el backend Trident asociado. Esto puede interrumpir la conectividad de almacenamiento y afectar las cargas de trabajo en ejecución. Valida el impacto antes de eliminar un StorageClass administrado.
-
La configuración automática del backend solo es compatible con AWS FSx for NetApp ONTAP.
Crear un Kubernetes StorageClass sin configuración automática del backend
Si quieres crear el backend de Trident y StorageClass por separado, entonces sigue estos pasos.
Entiende cómo funciona la configuración automática del backend
Trident obtiene la configuración del backend a partir de la definición de StorageClass. Cuando aplicas la StorageClass, Trident valida los parámetros necesarios, crea el backend y anota la StorageClass con el estado.
Trident crea el VolumeSnapshotClass solo una vez. Trident reutiliza el mismo VolumeSnapshotClass para los siguientes StorageClasses.
Crear el backend Trident
Para crear un backend Trident, necesitas crear un archivo de configuración en formato JSON o YAML. El archivo debe especificar el tipo de almacenamiento que quieres (NAS o SAN), el sistema de archivos, la SVM de la que lo vas a obtener y cómo autenticarte con ella. El siguiente ejemplo muestra cómo definir almacenamiento basado en NAS y usar un secreto de AWS para guardar las credenciales de la SVM que quieres usar:
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
backendName: tbc-ontap-nas
svm: svm-name
aws:
fsxFilesystemID: fs-xxxxxxxxxx
credentials:
name: "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name"
type: awsarn
{
"apiVersion": "trident.netapp.io/v1",
"kind": "TridentBackendConfig",
"metadata": {
"name": "backend-tbc-ontap-nas"
"namespace": "trident"
},
"spec": {
"version": 1,
"storageDriverName": "ontap-nas",
"backendName": "tbc-ontap-nas",
"svm": "svm-name",
"aws": {
"fsxFilesystemID": "fs-xxxxxxxxxx"
},
"managementLIF": null,
"credentials": {
"name": "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name",
"type": "awsarn"
}
}
}
Detalles del controlador de FSx for ONTAP
Puedes integrar Trident con Amazon FSx for NetApp ONTAP usando los siguientes controladores:
| Nombre del controlador | Descripción |
|---|---|
|
Cada PV aprovisionado es un LUN dentro de su propio volumen de Amazon FSx for NetApp ONTAP. Recomendado para almacenamiento en bloque. |
|
Cada PV aprovisionado es un volumen completo de Amazon FSx for NetApp ONTAP. Recomendado para NFS y SMB. |
|
Cada PV aprovisionado es un LUN con un número configurable de LUNs por volumen de Amazon FSx para NetApp ONTAP. |
|
Cada PV aprovisionado es un qtree, con un número configurable de qtrees por volumen de Amazon FSx para NetApp ONTAP. |
|
Cada PV aprovisionado es un volumen completo de Amazon FSx for NetApp ONTAP FlexGroup. |
Para obtener detalles del controlador, consulta "Controladores NAS" y "Controladores SAN".
Crea el backend
Después de crear el archivo de configuración, ejecuta los siguientes comandos para crear y validar la configuración del backend de Trident (TBC):
-
Crea la configuración del backend de Trident (TBC) desde el archivo yaml y ejecuta el siguiente comando:
kubectl create -f backendconfig.yaml -n tridenttridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created
-
Valida que la configuración de backend de Trident (TBC) se creó correctamente:
Kubectl get tbc -n tridentNAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-ontap-nas tbc-ontap-nas 933e0071-66ce-4324-b9ff-f96d916ac5e9 Bound Success
Para más información sobre otras opciones de configuración, consulta la sección [Backend-advanced-configuration-and-examples] a continuación.
Configura una clase de almacenamiento sin configuración automática del backend
A continuación se muestran ejemplos de configuraciones de Storage Class para su uso con Trident y FSx for ONTAP.
Clase de almacenamiento para NFS
Puedes usar este ejemplo para configurar StorageClass para volúmenes que usan NFS (consulta la sección de atributos de Trident a continuación para la lista completa de atributos):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
provisioningType: "thin"
snapshots: "true"
Storage Calss para iSCSI
Usa este ejemplo para configurar StorageClass para volúmenes que usan iSCSI:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
provisioningType: "thin"
snapshots: "true"
Clase de almacenamiento con NFSv3 y AWS Bottlerocket
Para aprovisionar volúmenes NFSv3 en AWS Bottlerocket, agrega lo requerido mountOptions a la clase de almacenamiento:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
mountOptions:
- nfsvers=3
- nolock
Atributos de Trident StorageClass
Estos parámetros determinan qué grupos de almacenamiento administrados por Trident se deben utilizar para aprovisionar volúmenes de un tipo dado.
| Atributo | Tipo | Valores | Oferta | Solicitud | Con el apoyo de |
|---|---|---|---|---|---|
medios1 |
cadena |
hdd, híbrido, ssd |
El pool contiene medios de este tipo; híbrido significa ambos |
Tipo de medio especificado |
ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, solidfire-san |
provisioningType |
cadena |
delgado, grueso |
Pool admite este método de aprovisionamiento |
Método de aprovisionamiento especificado |
grueso: todo ontap; fino: todo ontap & solidfire-san |
backendType |
cadena |
ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, solidfire-san, azure-netapp-files, ontap-san-economy |
Pool pertenece a este tipo de backend |
Backend especificado |
Todos los drivers |
instantáneas |
bool |
verdadero, falso |
El pool admite volúmenes con instantáneas |
Volumen con instantáneas habilitadas |
ontap-nas, ontap-san, solidfire-san |
clones |
bool |
verdadero, falso |
El pool admite la clonación de volúmenes |
Volumen con clones habilitados |
ontap-nas, ontap-san, solidfire-san |
cifrado |
bool |
verdadero, falso |
El pool admite volúmenes cifrados |
Volumen con cifrado habilitado |
ontap-nas, ontap-nas-economy, ontap-nas-flexgroups, ontap-san |
IOPS |
entero |
entero positivo |
El pool es capaz de garantizar IOPS en este rango |
Volumen garantizó estas IOPS |
solidfire-san |
1: No soportado por ONTAP Select o FSx for ONTAP systems
Consulta "Objetos de Kubernetes y Trident" para ver detalles sobre cómo las clases de almacenamiento interactúan con el PersistentVolumeClaim y los parámetros para controlar cómo Trident aprovisiona volúmenes.
Crear la clase de almacenamiento
Una vez que hayas configurado StorageClass, puedes crearlo en Kubernetes.
-
Este es un objeto de Kubernetes, así que usa
kubectlpara crearlo en Kubernetes.kubectl create -f storage-class-ontapnas.yaml -
Ahora deberías ver una clase de almacenamiento basic-csi tanto en Kubernetes como en Trident, y Trident debería haber descubierto los pools en el backend.
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
Aprovisionar volúmenes SMB
Puedes aprovisionar volúmenes SMB usando el controlador ontap-nas. Sin embargo, para hacerlo debes completar estos pasos: "Prepárate para aprovisionar volúmenes SMB".
Configuración avanzada de backend y ejemplos
Consulta la siguiente tabla para ver las opciones de configuración del backend:
| Parámetro | Descripción | Ejemplo |
|---|---|---|
|
Siempre 1 |
|
|
Nombre del controlador de almacenamiento |
|
|
Nombre personalizado o el backend de almacenamiento |
Nombre del driver + "_" + dataLIF |
|
Dirección IP de un clúster o de una LIF de administración de SVM. Se puede especificar un nombre de dominio completo (FQDN). Se puede configurar para usar direcciones IPv6 si Trident se instaló usando el flag de IPv6. Las direcciones IPv6 deben definirse entre corchetes, como [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]. Si proporcionas el |
"10.0.0.1", "[2001:1234:abcd::fefe]" |
|
Dirección IP del LIF de protocolo. Controladores NAS de ONTAP: NetApp recomienda especificar dataLIF. Si no se proporciona, Trident obtiene los dataLIF del SVM. Puedes especificar un nombre de dominio completo (FQDN) para las operaciones de montaje NFS, lo que te permite crear un DNS de round-robin para balancear la carga entre varios dataLIF. Se puede cambiar después de la configuración inicial. Controladores SAN de ONTAP: No lo especifiques para iSCSI. Trident usa ONTAP Selective LUN Map para descubrir los LIF de iSCSI necesarios para establecer una sesión multipath. Se genera una advertencia si dataLIF se define explícitamente. Se puede configurar para usar direcciones IPv6 si Trident se instaló usando el flag de IPv6. Las direcciones IPv6 deben definirse entre corchetes, como [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]. |
|
|
Habilita la creación y actualización automática de políticas de exportación [Boolean]. Usando las opciones |
|
|
Lista de CIDR para filtrar las direcciones IP de los nodos de Kubernetes cuando |
"["0.0.0.0/0", "::/0"]" |
|
Conjunto de etiquetas arbitrarias con formato JSON para aplicar en volúmenes |
"" |
|
Valor codificado en Base64 del certificado del cliente. Usado para auth basada en certificados |
"" |
|
Valor codificado en Base64 de la clave privada del cliente. Usado para auth basada en certificados |
"" |
|
Valor codificado en Base64 del certificado de CA de confianza. Opcional. Se usa para la autenticación basada en certificados. |
"" |
|
Nombre de usuario para conectarte al clúster o SVM. Se utiliza para la autenticación basada en credenciales. Por ejemplo, vsadmin. |
|
|
Contraseña para conectarse al clúster o SVM. Se utiliza para la autenticación basada en credenciales. |
|
|
Máquina virtual de almacenamiento que vas a usar |
Derivado si se especifica un LIF de gestión de SVM. |
|
Prefijo utilizado al aprovisionar nuevos volúmenes en la SVM. No se puede modificar después de la creación. Para actualizar este parámetro, tendrás que crear un nuevo backend. |
|
|
No especifiques para Amazon FSx for NetApp ONTAP. Los |
No uses. |
|
Falla el aprovisionamiento si el tamaño del volumen solicitado supera este valor. También restringe el tamaño máximo de los volúmenes que administra para qtrees y LUNs, y la |
"" (no aplicado por defecto) |
|
LUNs máximos por FlexVol volume, deben estar en el rango [50, 200]. Solo para SAN. |
“100” |
|
Indicadores de depuración para utilizar cuando estés solucionando problemas. Por ejemplo, {"api":false, "method":true} no uses |
null |
|
Lista de opciones de montaje NFS separadas por comas. Las opciones de montaje para volúmenes persistentes de Kubernetes normalmente se especifican en las clases de almacenamiento, pero si no se especifican opciones de montaje en una clase de almacenamiento, Trident usará las opciones de montaje especificadas en el archivo de configuración del backend de almacenamiento. Si no se especifican opciones de montaje en la clase de almacenamiento ni en el archivo de configuración, Trident no establecerá ninguna opción de montaje en un volumen persistente asociado. |
"" |
|
Configura la creación de volúmenes NFS o SMB. Las opciones son |
|
|
Máximo de qtrees por FlexVol volume, debe estar en el rango [50, 300] |
|
|
Puedes especificar uno de los siguientes: el nombre de un recurso compartido SMB creado usando Microsoft Management Console o ONTAP CLI, o un nombre para permitir que Trident cree el recurso compartido SMB. Este parámetro es obligatorio para los backends de Amazon FSx for ONTAP. |
|
|
Parámetro booleano para usar las ONTAP REST APIs. Cuando se establece en |
|
|
Puedes especificar lo siguiente en el archivo de configuración para AWS FSx for ONTAP: - |
|
|
Especifica las credenciales de FSx SVM que se van a guardar en AWS Secrets Manager. - |
Opciones de configuración de backend para aprovisionar volúmenes
Puedes controlar el aprovisionamiento predeterminado usando estas opciones en la defaults sección de la configuración. Por ejemplo, mira los ejemplos de configuración abajo.
| Parámetro | Descripción | Predeterminado |
|---|---|---|
|
Asignación de espacio para LUNs |
|
|
Modo de reserva de espacio; "ninguno" (fino) o "volumen" (grueso) |
|
|
Política de SnapVault a utilizar |
|
|
Grupo de políticas de QoS para asignar a los volúmenes creados. Elige una de qosPolicy o adaptiveQosPolicy por pool de almacenamiento o backend. Usar grupos de políticas de QoS con Trident requiere ONTAP 9.8 o una versión posterior. Deberías usar un grupo de políticas de QoS no compartido y asegurarte de que el grupo de políticas se aplique a cada componente individualmente. Un grupo de políticas de QoS compartido impone el límite máximo para el rendimiento total de todas las cargas de trabajo. |
"" |
|
Grupo de políticas de QoS adaptativo para asignar a los volúmenes creados. Elige una de qosPolicy o adaptiveQosPolicy por pool de almacenamiento o backend. No compatible con ontap-nas-economy. |
"" |
|
Porcentaje de volumen reservado para snapshots "0" |
Si |
|
Divide un clon de su padre al momento de su creación |
|
|
Habilita NetApp Volume Encryption (NVE) en el nuevo volumen; el valor predeterminado es |
|
|
Activa el cifrado LUKS. Consulta "Usa Linux Unified Key Setup (LUKS)". Solo para SAN. |
"" |
|
Política de tiering a usar |
|
|
Modo para nuevos volúmenes. Dejar vacío para volúmenes SMB. |
"" |
|
Estilo de seguridad para nuevos volúmenes. NFS admite |
NFS predeterminado es |