View a markdown version of this page

Almacén de instancias de Amazon EC2 para almacenamiento de volúmenes de Kubernetes - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Almacén de instancias de Amazon EC2 para almacenamiento de volúmenes de Kubernetes

El controlador de CSI del almacén de instancias de Amazon EC2 es un complemento de interfaz de almacenamiento de contenedores (CSI) que permite a Kubernetes utilizar volúmenes del almacén de instancias de EC2. Los volúmenes del almacén de instancias proporcionan almacenamiento efímero por bloques conectado físicamente al equipo host. El controlador administra el ciclo de vida de estos volúmenes de almacenamiento NVMe y los pone a disposición como volúmenes persistentes de Kubernetes.

El controlador de CSI del almacén de instancias de Amazon EC2 interactúa con los dispositivos NVMe de backend mediante operaciones locales de Linux. No se utilizan llamadas a la API AWS, por lo que no se requiere ningún rol de IAM.

Consideraciones

importante

El controlador de CSI del almacén de instancias de Amazon EC2 borrará todos los datos de los discos efímeros durante la instalación. Si otro controlador de CSI o un sistema de administración de volúmenes (como LVM, sistemas de archivos sin procesar, LUKS, etc.) administra discos efímeros, haga una copia de seguridad de sus datos antes de instalar el controlador de CSI del almacén de instancias de Amazon EC2 para evitar la pérdida de datos.

  • El controlador de CSI del almacén de instancias de Amazon EC2 no funciona con el modo automático de EKS.

  • No puede montar volúmenes de almacén de instancias de Amazon EC2 en los pods de Fargate.

  • El controlador de CSI del almacén de instancias de Amazon EC2 no se encuentra disponible para los siguientes tipos de instancias: C1, C3, C4, C5d, C5ad, C6gd, D2, D3, D3en, DL1, E3, Edge1gd, F1, G2, G3, G4ad, G4dn, H1, HSM1, I2, I3, I3.metal, I3en, M1, M2, M3, M4, M5d, M5ad, M5dn, M6gd, P2, P3, P3dn, P4d, P4de, R3, R4, R5d, R5ad, R5dn, R6gd, T1, T2, X1, X1e, X2gd y Z1d.

  • Se ofrece soporte para la versión más reciente del complemento y para una versión anterior. Las correcciones para errores o vulnerabilidades encontrados en la versión más reciente se trasladarán a la versión anterior en una nueva versión menor.

  • El almacenamiento de instancias es efímero. Los datos se pierden cuando el nodo termina. Implemente copias de seguridad o replicación a nivel de aplicación para datos críticos.

  • No se admite expansión de volumen.

  • La limitación de E/S está habilitada de forma predeterminada en todos los volúmenes para garantizar un reparto justo del ancho de banda entre las cargas de trabajo. Para obtener más información, consulte Limitación de E/S.

  • Las instancias recién lanzadas han actualizado las respuestas a los comandos de identificación de NVMe en comparación con las instancias más antiguas del mismo tipo. Si las herramientas dependen de valores de identificación de NVMe específicos, revise la lógica para comprobar la compatibilidad. Para obtener más información, consulte El espacio de nombres de NVMe cambia en las instancias recién lanzadas.

Requisitos previos

Antes de empezar, asegúrese de que tiene lo siguiente:

  • Un clúster existente de Amazon EKS. Para ver todas las versiones disponibles del complemento, ejecute el siguiente comando de la AWS CLI:

    aws eks describe-addon-versions --addon-name aws-ec2-local-instance-store-csi-driver

Instalación del controlador de CSI del almacén de instancias de Amazon EC2

El controlador de CSI del almacén de instancias de Amazon EC2 está disponible como complemento de Amazon EKS. La instalación del controlador permite que el clúster utilice los volúmenes del almacén de instancias para el almacenamiento de los pods.

Para instalar el controlador, agregue el complemento del controlador de CSI del almacén de instancias de Amazon EC2 a su clúster. Para obtener instrucciones, consulte Creación de un complemento de Amazon EKS. Para obtener más información sobre los complementos de EKS, consulte Complementos de Amazon EKS.

Implementación de una aplicación de muestra

Tras instalar el controlador, puede implementar aplicaciones de muestra para comprobar que los volúmenes del almacén de instancias funcionan correctamente con el clúster. Puede implementar una variedad de aplicaciones de muestra y modificarlas según sea necesario.

Limitación de E/S

El controlador CSI del almacén de instancias de Amazon EC2 incluye una limitación de E/S integrada para garantizar un reparto justo del ancho de banda entre las cargas de trabajo del mismo controlador NVMe. La limitación está habilitada de forma predeterminada para todos los volúmenes, lo que evita que una sola carga de trabajo consuma un ancho de banda de E/S desproporcionado a expensas de otras cargas de trabajo en el mismo nodo.

Configuración de la limitación

Puede configurar la limitación en dos niveles:

  • Parámetro StorageClass: establezca el parámetro throttling en "true" (valor predeterminado) o "false" en la definición de StorageClass.

  • Anotación de PVC: establezca la anotación lis.csi.aws.com/throttling en "true" o "false" en PersistentVolumeClaims individuales. Esto anula la configuración de StorageClass cuando está presente.

En la siguiente tabla se muestra cómo interactúan el parámetro StorageClass y la anotación de PVC:

Anotación de PVC Parámetro StorageClass Resultado

No configurado

No configurado

Limitación habilitada (opción predeterminada)

No configurado

"false"

Limitación deshabilitada

"false"

"true" o no establecido

Limitación deshabilitada

"true"

"false"

Limitación habilitada

Creación de StorageClass sin limitación

Para deshabilitar la limitación de todos los volúmenes de una StorageClass:

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ec2-instance-store-unthrottled provisioner: lis.csi.aws.com parameters: throttling: "false" volumeBindingMode: WaitForFirstConsumer

Deshabilitación de la limitación para un solo PVC

Para deshabilitar la limitación en un PVC individual mientras se usa una StorageClass limitada:

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: high-perf-pvc annotations: lis.csi.aws.com/throttling: "false" spec: accessModes: - ReadWriteOnce storageClassName: ec2-instance-store-sc resources: requests: storage: 100Gi

Consideraciones sobre la limitación

  • La limitación está habilitada de forma predeterminada para proporcionar un rendimiento predecible para todas las cargas de trabajo que comparten un controlador NVMe.

  • La deshabilitación de la limitación en un volumen permite que consuma más ancho de banda de E/S, lo que puede afectar al rendimiento de otros volúmenes limitados en el mismo controlador.

  • Considere la posibilidad de aislar las cargas de trabajo sin limitación en nodos dedicados.

  • En el caso de los volúmenes RAID-0 que abarcan varios controladores, se aplica una limitación a todas las particiones miembro.

  • El estado de limitación se mantiene tras los reinicios de los nodos.

El espacio de nombres de NVMe cambia en las instancias recién lanzadas

Las instancias de EC2 lanzadas recientemente con almacenamiento de instancias local han actualizado las respuestas de los comandos Identificar controlador e Identificar espacio de nombres de NVMe. Estos cambios permiten la administración del espacio de nombres de NVMe en el almacenamiento de instancias locales de EC2. Las instancias en ejecución existentes no se ven afectadas y los valores permanecen estables durante todo el ciclo de vida de cualquier instancia.

Valores de campo actualizados

Los siguientes campos han cambiado en las instancias lanzadas recientemente en comparación con las instancias anteriores del mismo tipo:

Identificar controlador (nvme id-ctrl)
  • Bit 3 de OACS: se cambió de 0 a 1

  • Bit 8 de OAES: se cambió de 0 a 1

  • NN: se cambió de 1 a un valor <= 256

  • TNVMCAP: se cambió de 0 al tamaño real del almacenamiento local

Identificar espacio de nombres (nvme id-ns)
  • NVMCAP: se cambió de 0 al tamaño real del almacenamiento local

  • NGUID: se cambió de todo ceros a un NGUID válido

Todos los valores actualizados se ajustan a la especificación de NVMe.

Ámbito de los cambios

Estos cambios se aplican exclusivamente al almacenamiento de instancias locales de EC2. Los volúmenes de Amazon EBS no se ven afectados. Para distinguir entre los volúmenes de EBS y el almacenamiento de instancias local, ejecute el siguiente comando:

sudo nvme list

En la salida:

  • Amazon Elastic Block Store = volumen de EBS

  • Amazon EC2 NVMe Instance Storage = almacenamiento de instancias local

Recuperación de valores de identificación de NVMe

Para consultar estos valores mediante nvme-cli:

# Identify Controller sudo nvme id-ctrl /dev/nvme1 # Identify Namespace sudo nvme id-ns /dev/nvme1n1

Acción requerida

No hay que hacer nada más. Estos cambios son compatibles con versiones anteriores y siguen la especificación de NVMe. Sin embargo, si la aplicación o las herramientas validan valores específicos de los comandos de identificación de NVMe o dependen de ellos, revise la lógica para garantizar la compatibilidad con los valores actualizados en las instancias recién lanzadas.