Información general de Trident
Trident es un orquestador de almacenamiento de código abierto y totalmente compatible para contenedores y distribuciones de Kubernetes, incluido Red Hat OpenShift. Trident funciona con toda la cartera de almacenamiento de NetApp, incluidos los sistemas de almacenamiento ONTAP y Element de NetApp, y también admite conexiones NFS e iSCSI. Trident acelera el flujo de trabajo de DevOps al permitir que los usuarios finales aprovisionen y gestionen el almacenamiento desde sus sistemas de almacenamiento de NetApp sin necesidad de intervención del administrador de almacenamiento.
Un administrador puede configurar varios back-ends de almacenamiento a partir de necesidades de proyectos y modelos de sistema de almacenamiento que permiten funciones de almacenamiento avanzadas, como compresión, tipos de disco específicos o niveles de calidad de servicio que garantizan un cierto nivel de rendimiento. Una vez definidas estos back-ends pueden ser utilizados por los desarrolladores en sus proyectos para crear reclamaciones de volumen persistente (RVP) y conectar almacenamiento persistente a sus contenedores bajo demanda.
Trident tiene un ciclo de desarrollo rápido, y al igual que Kubernetes, se lanza cuatro veces al año.
Una matriz de soporte para qué versión de Trident se ha probado con la que se puede encontrar la distribución de Kubernetes "aquí".
Consulte "Documentación de productos de Trident"los detalles de instalación y configuración.
Descargue Trident
Para instalar Trident en el clúster de usuarios implementado y aprovisionar un volumen persistente, complete los siguientes pasos:
-
Descargue el archivo de instalación en la estación de trabajo de administración y extraiga el contenido. La versión actual de Trident es la 22.01, que se puede descargar "aquí".
-
Extraiga la instalación de Trident del paquete descargado.
[netapp-user@rhel7 ~]$ tar -xzf trident-installer-22.01.0.tar.gz [netapp-user@rhel7 ~]$ cd trident-installer/ [netapp-user@rhel7 trident-installer]$
Instale el operador Trident con Helm
-
En primer lugar, defina la ubicación del clúster de usuarios
kubeconfig
Archivo como variable de entorno para no tener que referirla, porque Trident no tiene opción para pasar este archivo.[netapp-user@rhel7 trident-installer]$ export KUBECONFIG=~/ocp-install/auth/kubeconfig
-
Ejecute el comando Helm para instalar al operador Trident desde el tarball en el directorio helm mientras crea el espacio de nombres de trident en su clúster de usuarios.
[netapp-user@rhel7 trident-installer]$ helm install trident helm/trident-operator-22.01.0.tgz --create-namespace --namespace trident NAME: trident LAST DEPLOYED: Fri May 7 12:54:25 2021 NAMESPACE: trident STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes. Your release is named 'trident' and is installed into the 'trident' namespace. Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster. To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases. You may find all Trident releases and source code online at https://github.com/NetApp/trident. To learn more about the release, try: $ helm status trident $ helm get all trident
-
Puede verificar que Trident se haya instalado correctamente comprobando los pods que se ejecutan en el espacio de nombres o mediante el binario trimentctl para comprobar la versión instalada.
[netapp-user@rhel7 trident-installer]$ oc get pods -n trident NAME READY STATUS RESTARTS AGE trident-csi-5z45l 1/2 Running 2 30s trident-csi-696b685cf8-htdb2 6/6 Running 0 30s trident-csi-b74p2 2/2 Running 0 30s trident-csi-lrw4n 2/2 Running 0 30s trident-operator-7c748d957-gr2gw 1/1 Running 0 36s [netapp-user@rhel7 trident-installer]$ ./tridentctl -n trident version +----------------+----------------+ | SERVER VERSION | CLIENT VERSION | +----------------+----------------+ | 22.01.0 | 22.01.0 | +----------------+----------------+
En algunos casos, los entornos del cliente pueden requerir la personalización de la puesta en marcha de Trident. En estos casos, también es posible instalar manualmente el operador Trident y actualizar los manifiestos incluidos para personalizar la implementación. |
Instale manualmente el operador de Trident
-
Primero, establezca la ubicación del clúster de usuarios
kubeconfig
Archivo como variable de entorno para no tener que referirla, porque Trident no tiene opción para pasar este archivo.[netapp-user@rhel7 trident-installer]$ export KUBECONFIG=~/ocp-install/auth/kubeconfig
-
La
trident-installer
el directorio contiene manifiestos para definir todos los recursos necesarios. Con los manifiestos adecuados, cree laTridentOrchestrator
definición de recursos personalizados.[netapp-user@rhel7 trident-installer]$ oc create -f deploy/crds/trident.netapp.io_tridentorchestrators_crd_post1.16.yaml customresourcedefinition.apiextensions.k8s.io/tridentorchestrators.trident.netapp.io created
-
Si no existe ninguno, cree un espacio de nombres Trident en el clúster mediante el manifiesto proporcionado.
[netapp-user@rhel7 trident-installer]$ oc apply -f deploy/namespace.yaml namespace/trident created
-
Cree los recursos necesarios para la puesta en marcha del operador Trident, como, por ejemplo, la
ServiceAccount
para el operador, unClusterRole
y..ClusterRoleBinding
para laServiceAccount
, un dedicado `PodSecurityPolicy`o el propio operador.[netapp-user@rhel7 trident-installer]$ oc create -f deploy/bundle.yaml serviceaccount/trident-operator created clusterrole.rbac.authorization.k8s.io/trident-operator created clusterrolebinding.rbac.authorization.k8s.io/trident-operator created deployment.apps/trident-operator created podsecuritypolicy.policy/tridentoperatorpods created
-
Puede comprobar el estado del operador después de desplegarlo con los siguientes comandos:
[netapp-user@rhel7 trident-installer]$ oc get deployment -n trident NAME READY UP-TO-DATE AVAILABLE AGE trident-operator 1/1 1 1 23s [netapp-user@rhel7 trident-installer]$ oc get pods -n trident NAME READY STATUS RESTARTS AGE trident-operator-66f48895cc-lzczk 1/1 Running 0 41s
-
Con el operador puesto en marcha, ahora podemos utilizarlo para instalar Trident. Esto requiere crear un
TridentOrchestrator
.[netapp-user@rhel7 trident-installer]$ oc create -f deploy/crds/tridentorchestrator_cr.yaml tridentorchestrator.trident.netapp.io/trident created [netapp-user@rhel7 trident-installer]$ oc describe torc trident Name: trident Namespace: Labels: <none> Annotations: <none> API Version: trident.netapp.io/v1 Kind: TridentOrchestrator Metadata: Creation Timestamp: 2021-05-07T17:00:28Z Generation: 1 Managed Fields: API Version: trident.netapp.io/v1 Fields Type: FieldsV1 fieldsV1: f:spec: .: f:debug: f:namespace: Manager: kubectl-create Operation: Update Time: 2021-05-07T17:00:28Z API Version: trident.netapp.io/v1 Fields Type: FieldsV1 fieldsV1: f:status: .: f:currentInstallationParams: .: f:IPv6: f:autosupportHostname: f:autosupportimage: f:autosupportProxy: f:autosupportSerialNumber: f:debug: f:enableNodePrep: f:imagePullSecrets: f:imageRegistry: f:k8sTimeout: f:kubeletDir: f:logFormat: f:silenceAutosupport: f:tridentimage: f:message: f:namespace: f:status: f:version: Manager: trident-operator Operation: Update Time: 2021-05-07T17:00:28Z Resource Version: 931421 Self Link: /apis/trident.netapp.io/v1/tridentorchestrators/trident UID: 8a26a7a6-dde8-4d55-9b66-a7126754d81f Spec: Debug: true Namespace: trident Status: Current Installation Params: IPv6: false Autosupport Hostname: Autosupport image: netapp/trident-autosupport:21.01 Autosupport Proxy: Autosupport Serial Number: Debug: true Enable Node Prep: false Image Pull Secrets: Image Registry: k8sTimeout: 30 Kubelet Dir: /var/lib/kubelet Log Format: text Silence Autosupport: false Trident image: netapp/trident:22.01.0 Message: Trident installed Namespace: trident Status: Installed Version: v22.01.0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Installing 80s trident-operator.netapp.io Installing Trident Normal Installed 68s trident-operator.netapp.io Trident installed
-
Puede verificar que Trident se haya instalado correctamente comprobando los pods que se ejecutan en el espacio de nombres o mediante el binario trimentctl para comprobar la versión instalada.
[netapp-user@rhel7 trident-installer]$ oc get pods -n trident NAME READY STATUS RESTARTS AGE trident-csi-bb64c6cb4-lmd6h 6/6 Running 0 82s trident-csi-gn59q 2/2 Running 0 82s trident-csi-m4szj 2/2 Running 0 82s trident-csi-sb9k9 2/2 Running 0 82s trident-operator-66f48895cc-lzczk 1/1 Running 0 2m39s [netapp-user@rhel7 trident-installer]$ ./tridentctl -n trident version +----------------+----------------+ | SERVER VERSION | CLIENT VERSION | +----------------+----------------+ | 22.01.0 | 22.01.0 | +----------------+----------------+
Prepare los nodos de trabajo para el almacenamiento
NFS
La mayoría de las distribuciones de Kubernetes incluyen los paquetes y utilidades para montar los back-ends de NFS instalados de forma predeterminada, incluido Red Hat OpenShift.
Sin embargo, para NFSv3, no hay ningún mecanismo para negociar la concurrencia entre el cliente y el servidor. Por ello, el número máximo de entradas de la tabla de ranuras sunrpc del lado del cliente debe sincronizarse manualmente con el valor compatible del servidor para garantizar el mejor rendimiento de la conexión NFS sin que el servidor tenga que reducir el tamaño de la ventana de la conexión.
En el caso de ONTAP, el número máximo admitido de entradas de la tabla de ranuras de sunrpc es de 128, es decir, ONTAP puede atender 128 solicitudes de NFS simultáneas en un momento. Sin embargo, de forma predeterminada, Red Hat CoreOS/Red Hat Enterprise Linux tiene un máximo de 65,536 entradas de tabla de ranuras sunrpc por conexión. Tenemos que establecer este valor en 128 y esto se puede hacer usando el operador de configuración de máquina (MCO) en OpenShift.
Para modificar el número máximo de entradas de la tabla de ranuras de sunrpc en los nodos de trabajo de OpenShift, realice los pasos siguientes:
-
Inicie sesión en la consola web de OCP y desplácese hasta Compute > Machine Configs. Haga clic en Crear configuración de máquina. Copie y pegue el archivo YAML y haga clic en Crear.
-
Una vez creada la MCO, la configuración debe aplicarse a todos los nodos de trabajo y reiniciarse uno por uno. Todo el proceso tarda aproximadamente de 20 a 30 minutos. Compruebe si la configuración de la máquina se aplica mediante
oc get mcp
y asegúrese de que el grupo de configuración de la máquina para los trabajadores esté actualizado.[netapp-user@rhel7 openshift-deploy]$ oc get mcp NAME CONFIG UPDATED UPDATING DEGRADED master rendered-master-a520ae930e1d135e0dee7168 True False False worker rendered-worker-de321b36eeba62df41feb7bc True False False
ISCSI
Para preparar los nodos de trabajo y permitir la asignación de volúmenes de almacenamiento en bloques mediante el protocolo iSCSI, debe instalar los paquetes necesarios para que admitan dicha funcionalidad.
En Red Hat OpenShift, esto se maneja aplicando una MCO (operador de configuración de máquina) a su clúster después de desplegarla.
Para configurar los nodos de trabajo para que ejecuten servicios iSCSI, lleve a cabo los siguientes pasos:
-
Inicie sesión en la consola web de OCP y desplácese hasta Compute > Machine Configs. Haga clic en Crear configuración de máquina. Copie y pegue el archivo YAML y haga clic en Crear.
Cuando no se utiliza el acceso múltiple:
Cuando se utiliza el acceso múltiple:
-
Una vez creada la configuración, se tarda entre 20 y 30 minutos aproximadamente en aplicar la configuración a los nodos de trabajo y volver a cargarlos. Compruebe si la configuración de la máquina se aplica mediante
oc get mcp
y asegúrese de que el grupo de configuración de la máquina para los trabajadores esté actualizado. También puede iniciar sesión en los nodos de trabajo para confirmar que el servicio iscsid se está ejecutando (y el servicio multipathd se está ejecutando si se utiliza la función multivía).[netapp-user@rhel7 openshift-deploy]$ oc get mcp NAME CONFIG UPDATED UPDATING DEGRADED master rendered-master-a520ae930e1d135e0dee7168 True False False worker rendered-worker-de321b36eeba62df41feb7bc True False False [netapp-user@rhel7 openshift-deploy]$ ssh core@10.61.181.22 sudo systemctl status iscsid ● iscsid.service - Open-iSCSI Loaded: loaded (/usr/lib/systemd/system/iscsid.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-05-26 13:36:22 UTC; 3 min ago Docs: man:iscsid(8) man:iscsiadm(8) Main PID: 1242 (iscsid) Status: "Ready to process requests" Tasks: 1 Memory: 4.9M CPU: 9ms CGroup: /system.slice/iscsid.service └─1242 /usr/sbin/iscsid -f [netapp-user@rhel7 openshift-deploy]$ ssh core@10.61.181.22 sudo systemctl status multipathd ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-05-26 13:36:22 UTC; 3 min ago Main PID: 918 (multipathd) Status: "up" Tasks: 7 Memory: 13.7M CPU: 57ms CGroup: /system.slice/multipathd.service └─918 /sbin/multipathd -d -s
También es posible confirmar que MachineConfig se ha aplicado correctamente y que los servicios se han iniciado como se esperaba ejecutando el oc debug
comando con los indicadores apropiados.
Cree back-ends del sistema de almacenamiento
Después de completar la instalación del operador Trident, debe configurar el back-end para la plataforma de almacenamiento NetApp específica que esté utilizando. Siga los siguientes enlaces para continuar con la instalación y configuración de Trident.