Skip to main content
NetApp container solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Instala Trident de NetApp en un clúster de VKS

Colaboradores banum-netapp

Instala NetApp Trident como el aprovisionador de almacenamiento dinámico en tu clúster de Kubernetes Service de vSphere para integrar el almacenamiento NetApp ONTAP con tus cargas de trabajo de Kubernetes.

Antes de empezar
  • Asegúrate de que tu clúster ONTAP esté configurado y conectado a tu entorno de VMware Kubernetes.

  • Asegúrate de que tu clúster VKS tenga instaladas las herramientas iSCSI o NVMe si tus cargas de trabajo van a utilizar esos protocolos para almacenamiento.

  • Asegúrate de tener kubectl instalado en un equipo desde el que puedas conectarte al clúster VKS utilizando el archivo kubeconfig.

    Descarga de kubeconfig desde la pestaña Recursos
Pasos
  1. Instala el operador de Trident usando un chart de Helm siguiendo las instrucciones de la documentación de Trident:

    Antes de ejecutar la instalación de Helm, crea y etiqueta el trident espacio de nombres. La enforce=privileged etiqueta es obligatoria porque Trident ejecuta cargas de trabajo con privilegios. Sin ella, el controlador de admisión de seguridad de pods de Kubernetes impedirá que se inicien los pods de Trident.

    kubectl create namespace trident
    kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged
    Mostrar ejemplo
    helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident

    Para habilitar el registro de depuración, añade --set tridentDebug=true:

    helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident --set tridentDebug=true
    Nota También puedes instalar Trident manualmente mediante el Trident Operator. Consulta los procedimientos que se indican en la documentación de Trident: "Implementa manualmente el operador Trident"

    Asegúrate de haber etiquetado el trident espacio de nombres con las etiquetas de seguridad de pod necesarias antes de instalar Trident manualmente.

  2. Confirma que todos los pods Trident están en ejecución en el clúster.

    Mostrar ejemplo
    kubectl get pods -n trident
    Trident instalado
    Nota Si los pods de Trident no se inician con un error de admisión de PodSecurity, es posible que las etiquetas de seguridad de los pods no se hayan aplicado al trident espacio de nombres antes de la instalación. Usa --overwrite para volver a aplicarlas y luego verifica que los pods se inicien.
    kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged --overwrite

Prepara el backend de almacenamiento y los archivos de configuración de StorageClass para tu entorno

  1. Configura un backend de Trident para ONTAP definiendo los datos de conexión necesarios y los parámetros de almacenamiento.

  2. Define clases de almacenamiento en Kubernetes que se corresponden con los backends de almacenamiento NetApp. Estas clases especifican parámetros como las características de rendimiento y las políticas de replicación.

    Define los backends y las clases de almacenamiento de Trident para los siguientes protocolos según lo requieran tus cargas de trabajo:

    • NAS (controlador ontap-nas)

    • NAS Economy (controlador ontap-nas-economy)

    • SAN (controlador ontap-san) para los protocolos iSCSI, FC o NVMe

    • SAN Economy (ontap-san-economy driver) para iSCSI

      NAS

      Crea un TridentBackendConfig y un StorageClass para ONTAP NAS para habilitar el aprovisionamiento de almacenamiento persistente basado en NFS. La configuración del backend incluye credenciales almacenadas en un Kubernetes Secret y hace referencia a tu ONTAP SVM y a tu LIF de gestión.

      Ejemplo de secreto de backend y archivo de configuración de backend con autenticación mediante nombre de usuario y contraseña (guardar como tbc-nas.yaml):

      # tbc-nas.yaml
      apiVersion: v1
      kind: Secret
      metadata:
        name: tbc-nas-secret
        namespace: trident
      type: Opaque
      data:
        username: "<base64-encoded cluster admin username>"
        password: "<base64-encoded cluster admin password>"
      ---
      apiVersion: trident.netapp.io/v1
      kind: TridentBackendConfig
      metadata:
        name: tbc-nas
        namespace: trident
      spec:
        version: 1
        storageDriverName: ontap-nas
        managementLIF: <ONTAP management LIF>
        backendName: tbc-nas
        svm: <your SVM name>
        storagePrefix: <your prefix for all volume names created using this backend configuration>
        defaults:
          nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
        credentials:
          name: tbc-nas-secret

      Ejemplo de secreto de backend y archivo de configuración de backend con autenticación mediante certificado de cliente (guardar como tbc-nas.yaml):

      # tbc-nas.yaml
      apiVersion: v1
      kind: Secret
      metadata:
        name: ontap-nas-secret
        namespace: trident
      type: Opaque
      stringData:
        clientPrivateKey: <client private key value>
      ---
      apiVersion: trident.netapp.io/v1
      kind: TridentBackendConfig
      metadata:
        name: tbc-nas
        namespace: trident
      spec:
        version: 1
        storageDriverName: ontap-nas
        managementLIF: <ONTAP management LIF>
        backendName: tbc-nas
        svm: <your SVM name>
        storagePrefix: <your prefix for all volume names created using this backend configuration>
        credentials:
          name: ontap-nas-secret
        clientCertificate: <client certificate>

      StorageClass definición (guarda como sc-nas.yaml):

      mountOptions es un parámetro opcional que especifica opciones de montaje adicionales para volúmenes NFS. La opción nconnect permite múltiples conexiones TCP en paralelo para un único montaje NFS, lo que puede mejorar el rendimiento en cargas de trabajo de alto rendimiento. El valor por defecto es 1, pero se puede aumentar hasta el máximo permitido por el sistema ONTAP.

ONTAP admite hasta 16 conexiones para un único montaje NFS en un cliente compatible con nconnect. Trident transmite las opciones de montaje directamente a los nodos de trabajo de Kubernetes, así que elige un valor que sea compatible tanto con el cliente de NFS del nodo de trabajo como con ONTAP; en el siguiente ejemplo se utilizan cuatro conexiones.

# sc-nas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  media: "ssd"
  provisioningType: "thin"
  snapshots: "true"
allowVolumeExpansion: true
mountOptions:
- nconnect=4

Crea un TridentBackendConfig y un StorageClass para el controlador ONTAP NAS Economy para habilitar el aprovisionamiento de almacenamiento persistente basado en NFS usando qtrees. La configuración del backend incluye credenciales almacenadas en un Secret de Kubernetes y hace referencia a tu SVM de ONTAP y a tu LIF de gestión.

Ejemplo de secreto de backend y archivo de configuración de backend con autenticación mediante nombre de usuario y contraseña (guardar como tbc-nas-economy.yaml):

# tbc-nas-economy.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-nas-economy-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-nas-economy
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-nas-economy
  managementLIF: <ONTAP management LIF>
  backendName: tbc-nas-eco
  svm: <your SVM name>
  storagePrefix: <your prefix for all volume names created using this backend configuration>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-nas-economy-secret

StorageClass definición (guarda como sc-nas-economy.yaml):

# sc-nas-economy.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas-economy
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas-economy"
  media: "ssd"
  provisioningType: "thin"
allowVolumeExpansion: true
mountOptions:
- nconnect=4

Crea un TridentBackendConfig y un StorageClass para ONTAP SAN con iSCSI para habilitar el aprovisionamiento de almacenamiento en bloques basado en iSCSI. La configuración del backend utiliza el controlador ontap-san e incluye credenciales almacenadas en un secreto de Kubernetes. El sanType parámetro adopta por defecto el protocolo iSCSI si se omite.

Secreto del backend y archivo de configuración del backend con autenticación mediante nombre de usuario y contraseña (guardar como tbc-iscsi.yaml):

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: ontap-iscsi
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret

Secreto del backend y archivo de configuración del backend con autenticación mediante certificado de cliente (guardar como tbc-iscsi.yaml):

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: ontap-iscsi
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret
  clientCertificate: <client certificate>

StorageClass definición (guarda como sc-iscsi.yaml):

# sc-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-iscsi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

Crea un TridentBackendConfig y un StorageClass para ONTAP SAN con NVMe para habilitar el aprovisionamiento de almacenamiento en bloques basado en NVMe. La configuración del backend utiliza el controlador ontap-san e incluye credenciales almacenadas en un Secret de Kubernetes. El parámetro sanType debe establecerse en nvme.

Secreto del backend y archivo de configuración del backend con autenticación mediante nombre de usuario y contraseña (guardar como tbc-nvme.yaml):

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-nvme
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: ontap-nvme
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret

Secreto del backend y archivo de configuración del backend con autenticación mediante certificado de cliente (guardar como tbc-nvme.yaml):

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-nvme
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: ontap-nvme
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret
  clientCertificate: <client certificate>

StorageClass definición (guarda como sc-nvme.yaml):

# sc-nvme.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nvme
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

Consulta la documentación de Trident para ver más ejemplos de archivos YAML e información sobre los modos de acceso y los modos de volumen compatibles con los controladores SAN y NAS.

Crea un archivo de configuración de VolumeSnapshotClass

Crea una definición de VolumeSnapshotClass. Esta configuración habilita las operaciones basadas en instantáneas para los volúmenes persistentes.

Definición de VolumeSnapshotClass (guarda como snapshot-class.yaml):

# snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: trident-snapshotclass
driver: csi.trident.netapp.io
deletionPolicy: Retain

Aplica los archivos de configuración a tu clúster

Aplica los archivos de configuración que creaste en los pasos anteriores al clúster de vSphere Kubernetes Service usando kubectl. Esto crea los secretos, las configuraciones de backend, las clases de almacenamiento y la clase de instantáneas necesarios en tu clúster.

Pasos
  1. Aplica los archivos TridentBackendConfig y StorageClass para cada protocolo que configuraste.

    kubectl apply -f tbc-nas.yaml -n trident
    kubectl apply -f sc-nas.yaml
    
    kubectl apply -f tbc-nas-economy.yaml -n trident
    kubectl apply -f sc-nas-economy.yaml
    
    kubectl apply -f tbc-iscsi.yaml -n trident
    kubectl apply -f sc-iscsi.yaml
    
    kubectl apply -f tbc-nvme.yaml -n trident
    kubectl apply -f sc-nvme.yaml
    
    kubectl apply -f snapshot-class.yaml
  2. Verifica que los recursos se hayan creado correctamente.

    Revisa los objetos TridentBackendConfig:

    kubectl get tbc -n trident

    Comprueba los objetos de StorageClass:

    kubectl get storageclass

    Revisa VolumeSnapshotClass:

    kubectl get volumesnapshotclass

Configura las clases predeterminadas de almacenamiento y de instantáneas de Trident

Configura la StorageClass y la VolumeSnapshotClass de Trident como valores predeterminados en el clúster del servicio de Kubernetes de vSphere.

Pasos
  1. Configura el StorageClass predeterminado de Trident.

    Configura un StorageClass respaldado por Trident como predeterminado del clúster para que las PersistentVolumeClaims lo usen automáticamente cuando no se especifique ninguna clase de almacenamiento.

    Asegúrate de que solo una StorageClass esté configurada como predeterminada. Si otra StorageClass ya está configurada como predeterminada, establece su anotación en false.

    Desde la CLI:

    kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  2. Establece el Trident VolumeSnapshotClass predeterminado.

    Configura un VolumeSnapshotClass compatible con Trident como valor predeterminado del clúster para habilitar las operaciones basadas en instantáneas para los volúmenes persistentes. Esto asegura que VolumeSnapshots use automáticamente el controlador CSI de Trident cuando no se especifique ninguna clase de instantánea.

    Asegúrate de que solo haya un VolumeSnapshotClass configurado como predeterminado. Si ya hay otro VolumeSnapshotClass configurado como predeterminado, establece su anotación en false.

    Desde la CLI:

    kubectl patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'

Utiliza las reclamaciones de volumen persistente de Kubernetes para solicitar almacenamiento para las cargas de trabajo

Trident aprovisiona automáticamente los volúmenes necesarios desde el almacenamiento backend NetApp. Consulta "Implementa cargas de trabajo con almacenamiento persistente" para ver ejemplos de cómo implementar una carga de trabajo con PVCs en un clúster de VKS.