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.
Una StorageClass
en el modo automático de EKS define cómo se aprovisionan automáticamente los volúmenes de Amazon EBS cuando las aplicaciones solicitan almacenamiento persistente. En esta página se explica cómo crear y configurar una StorageClass
que funcione con el modo automático de Amazon EKS para aprovisionar volúmenes de EBS.
Al configurar una StorageClass
, puede especificar la configuración predeterminada para los volúmenes de EBS, incluidos el tipo de volumen, el cifrado, las IOPS y otros parámetros de almacenamiento. También puede configurar StorageClass
para que utilice claves de AWS KMS para la administración del cifrado.
El modo automático de EKS no crea una StorageClass
en su nombre. Debe crear una StorageClass
que haga referencia a ebs.csi.eks.amazonaws.com
para utilizar la capacidad de almacenamiento del modo automático de EKS.
Primero, cree un archivo denominado storage-class.yaml
:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: auto-ebs-sc
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.eks.amazonaws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
encrypted: "true"
En segundo lugar, aplique la clase de almacenamiento al clúster.
kubectl apply -f storage-class.yaml
Componentes principales:
-
provisioner: ebs.csi.eks.amazonaws.com
: utiliza el modo automático de EKS -
volumeBindingMode: WaitForFirstConsumer
: retrasa la creación del volumen hasta que un pod lo necesite -
type: gp3
: especifica el tipo de volumen de EBS -
encrypted: "true"
: EBS cifrará todos los volúmenes creados con laStorageClass
. EBS utilizará el alias de clave deaws/ebs
predeterminado. Para obtener más información, consulte Cómo funciona el cifrado de Amazon EBS en la Guía del usuario de Amazon EBS. Este valor es opcional, pero recomendado. -
storageclass.kubernetes.io/is-default-class: "true"
: Kubernetes utilizará esta clase de almacenamiento de forma predeterminada, a menos que se especifique una clase de volumen diferente en una reclamación de volumen persistente. Este valor es opcional. Tenga cuidado al establecer este valor si va a migrar desde un controlador de almacenamiento diferente.
Utilice una clave de KMS autoadministrada para cifrar los volúmenes de EBS
Para utilizar una clave de KMS autoadministrada para cifrar los volúmenes de EBS automatizados mediante el modo automático de EKS, deberá:
-
Crear una clave de KMS autoadministrada.
-
Para obtener más información, consulte Cómo crear una clave de KMS de cifrado simétrico o Cómo Amazon Elastic Block Store (Amazon EBS) usa KMS en la Guía del usuario de KMS.
-
-
Cree una nueva política que permita el acceso a la clave de KMS.
-
Utilice la política de IAM de muestra que aparece a continuación para crear la política. Inserte el ARN de la nueva clave de KMS autoadministrada. Para obtener más información, consulte Cómo crear roles y asociar políticas (consola) en la Guía de usuario de IAM AWS.
-
-
Asocie la política al rol de clúster de EKS.
-
Utilice la consola de AWS para buscar el ARN del rol de clúster de EKS. La información del rol aparece en la sección Descripción general. Para obtener más información, consulte Rol de IAM del clúster de Amazon EKS.
-
-
Actualice la
StorageClass
de modo que haga referencia al ID de la clave de KMS en el campoparameters.kmsKeyId
.
Ejemplo de política de IAM de KMS autoadministrada
Actualice los siguientes valores de la política que aparece a continuación:
-
<account-id>
: el ID de la cuenta de AWS, como111122223333
-
<aws-region>
: la región de AWS del clúster, comous-west-2
{
"Version": "2012-10-17",
"Id": "key-auto-policy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account-id>:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:CreateGrant",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:CallerAccount": "<account-id>",
"kms:ViaService": "ec2.<aws-region>.amazonaws.com"
}
}
}
]
}
Ejemplo de StorageClass
de KMS autoadministrada
parameters:
type: gp3
encrypted: "true"
kmsKeyId: <custom-key-arn>
Referencia de los parámetros de StorageClass
Para obtener información general sobre los recursos de StorageClass
de Kubernetes, consulte Clases de almacenamiento
La sección parameters
del recurso StorageClass
es específica de AWS. Utilice la siguiente tabla para revisar las opciones disponibles.
Parámetros | Valores | Predeterminado/a | Descripción |
---|---|---|---|
“csi.storage.k8s.io/fstype” |
xfs, ext2, ext3, ext4 |
ext4 |
Tipo de sistema de archivos que se formateará durante la creación del volumen. Este parámetro distingue entre mayúsculas y minúsculas. |
“tipo” |
io1, io2, gp2, gp3, sc1, st1, standard, sbp1, sbg1 |
gp3 |
Tipo de volumen de EBS. |
“iopsPerGB” |
Operaciones de E/S por segundo por GiB. Se puede especificar para los volúmenes IO1, IO2 y GP3. |
||
“allowAutoIOPSPerGBIncrease” |
true, false |
false |
Si es |
“iops” |
Operaciones de E/S por segundo. Se puede especificar para los volúmenes IO1, IO2 y GP3. |
||
“rendimiento” |
125 |
El rendimiento se indica en MB/s. Solo es efectivo cuando se especifica el tipo de volumen gp3. |
|
“cifrado” |
true, false |
false |
Especifica si el volumen debe estar cifrado o no. Los valores válidos son “verdadero” o “falso”. |
“blockExpress” |
true, false |
false |
Habilita la creación de volúmenes io2 Block Express. |
“kmsKeyId” |
El ARN completo de la clave que se va a utilizar al cifrar el volumen. Si no se especifica, AWS utilizará la clave de KMS predeterminada para la región en la que se encuentra el volumen. Será una clave generada automáticamente y se llamará |
||
“blockSize” |
El tamaño del bloque que se utilizará al formatear el sistema de archivos subyacente. Solo se admite en nodos de Linux y con fstype |
||
“inodeSize” |
El tamaño del nodo de índice que se utilizará al formatear el sistema de archivos subyacente. Solo se admite en nodos de Linux y con fstype |
||
“bytesPerInode” |
Los |
||
“numberOfInodes” |
Los |
||
“ext4BigAlloc” |
true, false |
false |
Cambia el sistema de archivos |
“ext4ClusterSize” |
El tamaño del clúster que se utilizará al formatear un sistema de archivos |
Para obtener más información, consulte Controlador de CSI de AWS EBS
Consideraciones
La capacidad de almacenamiento en bloques del modo automático de EKS es diferente a la del controlador de CSI de EBS.
-
Aprovisionamiento estático
-
Si desea utilizar volúmenes de EBS creados externamente con el modo automático de EKS, tendrá que agregar manualmente una etiqueta
eks:eks-cluster-name
con la clave AWS y el valor del nombre del clúster.
-
-
Taint de inicio de nodos
-
No puede usar la característica de taint de inicio de nodos para evitar la programación de pods antes de que la capacidad de almacenamiento esté lista.
-
-
Etiquetas personalizadas en volúmenes aprovisionados dinámicamente
-
No puede utilizar la marca de la CLI de etiquetas adicionales para configurar etiquetas personalizadas en volúmenes de EBS aprovisionados dinámicamente
-
Puede utilizar el etiquetado de
StorageClass
para agregar etiquetas personalizadas. El modo automático de EKS agregará etiquetas a los recursos de AWS asociados. Deberá actualizar el rol de IAM del clúster para las etiquetas personalizadas. Para obtener más información, consulte Etiquetas personalizadas de AWS para los recursos del modo automático de EKS.
-
-
Métricas de rendimiento detalladas de EBS
-
No puede acceder a las métricas de Prometheus para obtener el rendimiento detallado de EBS
-
Instale el complemento de controlador de instantáneas de CSI
El modo automático de EKS es compatible con el complemento de Amazon EKS de controlador de instantáneas de CSI.
AWS sugiere configurar este complemento para que se ejecute en el grupo de nodos del system
integrado.
Para obtener más información, consulte:
Para instalar el controlador de instantáneas en el grupo de nodos del sistema
-
Abra el clúster de EKS en la consola de AWS
-
En la pestaña Complementos, seleccione Obtener más complementos
-
Seleccione el Controlador de instantáneas de CSI y luego Siguiente
-
En la página Configuración de los ajustes de los complementos seleccionados, seleccione Ajustes de configuración opcionales para ver el Esquema de configuración del complemento
-
Inserte el siguiente yaml para asociar el controlador de instantáneas al grupo de nodos del
system
. El controlador de instantáneas incluye una tolerancia a la taintCriticalAddonsOnly
.{ "nodeSelector": { "karpenter.sh/nodepool": "system" } }
-
Seleccione Siguiente.
-
-
Revise la configuración del complemento y, a continuación, seleccione Crear