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
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
throttlingen"true"(valor predeterminado) o"false"en la definición de StorageClass. -
Anotación de PVC: establezca la anotación
lis.csi.aws.com/throttlingen"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 |
|
Limitación deshabilitada |
|
|
|
Limitación deshabilitada |
|
|
|
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.