Crea una classe di archiviazione - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea una classe di archiviazione

Una StorageClass in Amazon EKS Auto Mode definisce come i volumi Amazon EBS vengono forniti automaticamente quando le applicazioni richiedono uno storage persistente. In questa pagina viene spiegato come creare e configurare una StorageClass che funzioni con Amazon EKS Auto Mode per il provisioning dei volumi EBS.

Configurando una StorageClass, è possibile specificare le impostazioni predefinite per i volumi EBS, inclusi il tipo di volume, la crittografia, gli IOPS e altri parametri di storage. Puoi anche configurare l'utilizzo delle StorageClass chiavi AWS KMS per la gestione della crittografia.

EKS Auto Mode non crea una StorageClass per te. Devi creare una StorageClass che faccia riferimento a ebs.csi.eks.amazonaws.com per usare la funzionalità di storage di EKS Auto Mode.

Per prima cosa, crea un file denominato storage-class.yaml:

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" allowedTopologies: - matchLabelExpressions: - key: eks.amazonaws.com/compute-type values: - auto provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true"

Poi applica la classe di archiviazione al cluster.

kubectl apply -f storage-class.yaml

Componenti chiave:

  • provisioner: ebs.csi.eks.amazonaws.com: usa EKS Auto Mode

  • allowedTopologies: specificando matchLabelExpressions in modo che corrisponda con eks.amazonaws.com/compute-type:auto, se i pod richiedono un volume su cui effettuare il provisioning automatico usando Auto Mode, i pod non verranno pianificati su nodi non automatici.

  • volumeBindingMode: WaitForFirstConsumer: ritarda la creazione del volume fino a quando un pod non ne ha bisogno

  • type: gp3: specifica il tipo di volume EBS

  • encrypted: "true": EBS crittograferà tutti i volumi creati usando la StorageClass. EBS userà l’alias chiave predefinito aws/ebs. Per ulteriori informazioni, consulta How Amazon EBS encryption works nella Guida per l’utente di Amazon EBS. Questo valore è opzionale ma consigliato.

  • storageclass.kubernetes.io/is-default-class: "true": Kubernetes userà questa classe di archiviazione per impostazione predefinita, a meno che non venga specificata una classe di volume diversa su una dichiarazione di volume persistente. Questo valore è facoltativo. Presta attenzione quando imposti questo valore se stai effettuando la migrazione da un controller di storage diverso.

Usa la chiave KMS autogestita per crittografare i volumi EBS

Per usare una chiave KMS autogestita per crittografare i volumi EBS automatizzati da EKS Auto Mode, bisogna:

  1. Creare una chiave KMS gestita dal cliente.

  2. Creare una nuova policy che consenta l’accesso alla chiave KMS.

  3. Collegare la policy al ruolo del cluster EKS.

    • Usa la AWS console per trovare l'ARN dell'EKS Cluster Role. Le informazioni relative al ruolo sono visibili nella sezione Panoramica. Per ulteriori informazioni, consulta Ruolo IAM del cluster Amazon EKS.

  4. Aggiornare la StorageClass per fare riferimento all’ID della chiave KMS nel campo parameters.kmsKeyId.

Esempio di policy IAM KMS autogestita

Aggiorna i valori seguenti nella policy riportata di seguito:

  • <account-id>— L'ID AWS del tuo account, ad esempio 111122223333

  • <aws-region>— La AWS regione del cluster, ad esempio us-west-2

{ "Version":"2012-10-17", "Id": "key-auto-policy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012: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": "123456789012", "kms:ViaService": "ec2.us-east-1.amazonaws.com" } } } ] }

Esempio di StorageClass KMS gestita dal cliente

parameters: type: gp3 encrypted: "true" kmsKeyId: <custom-key-arn>

Guida di riferimento per i parametri StorageClass

Per informazioni generali sulle risorse StorageClass di Kubernetes, consulta Storage Classes nella documentazione di Kubernetes.

THe parametersla sezione della StorageClass risorsa è specifica per AWS. Utilizza la tabella seguente per esaminare le opzioni disponibili.

Parameters Valori Predefinita Description

“csi.storage.k8s.io/fstype”

xfs, ext2, ext3, ext4

ext4

Tipo di file system che verrà formattato al momento della creazione del volume. Questo parametro prevede la distinzione tra maiuscole e minuscole.

“type”

io1, io2, gp2, gp3, sc1, st1, standard, sbp1, sbg1

gp3

Tipo di volume EBS.

“iopsPerGB”

Operazioni di I/O al secondo per GiB. Può essere specificato per IO1 IO2, e GP3 volumi.

«Consenti automaticamente IOPSPerGBIncrease»

true, false

false

Quando"true", il driver CSI aumenta gli IOPS per un volume troppo basso per rientrare nell'intervallo IOPS supportato da. iopsPerGB * <volume size> AWS Ciò consente al provisioning dinamico di avere sempre esito positivo, anche quando l’utente specifica una capacità PVC o un valore iopsPerGB troppo bassi. D’altra parte, ciò potrebbe comportare costi aggiuntivi, poiché tali volumi hanno un IOPS superiore a quello richiesto in iopsPerGB.

“iops”

Operazioni di I/O al secondo. Può essere specificato per IO1 IO2, e volumi. GP3

“throughput”

125

Velocità di trasmissione effettiva in MiB/S. Efficace solo quando è specificato il tipo di volume gp3.

“encrypted”

true, false

false

Se il volume deve essere crittografato o no. I valori validi sono “true” o “false”.

“blockExpress”

true, false

false

Permette la creazione di Volumi io2 Block Express.

"kmsKeyId"

L’ARN completo della chiave da usare per la crittografia del volume. Se non specificato, AWS utilizzerà la chiave KMS predefinita per la regione in cui si trova il volume. Si tratta di una chiave generata automaticamente chiamata /aws/ebs se non viene modificata.

“blockSize”

La dimensione del blocco da utilizzare per la formattazione del filesystem sottostante. Supportata solo sui nodi linux e con fstype ext2, ext3, ext4 o xfs.

“inodeSize”

La dimensione dell’inode da utilizzare per la formattazione del filesystem sottostante. Supportata solo sui nodi linux e con fstype ext2, ext3, ext4 o xfs.

"bytesPerInode"

bytes-per-inode da utilizzare per la formattazione del filesystem sottostante. Supportata solo sui nodi linux e con fstype ext2, ext3, ext4.

"numberOfInodes"

number-of-inodes da utilizzare per la formattazione del filesystem sottostante. Supportata solo sui nodi linux e con fstype ext2, ext3, ext4.

«BigAllocext4"

true, false

false

Modifica il filesystem ext4 per usare l’allocazione di blocchi in cluster abilitando l’opzione di formattazione bigalloc. Attenzione: bigalloc potrebbe non essere completamente supportato dal kernel Linux del nodo.

«ClusterSizeext4»

La dimensione del cluster da usare per formattare un filesystem ext4 quando la funzionalità bigalloc è abilitata. Nota: il parametro ext4BigAlloc deve essere impostato su true

Per ulteriori informazioni, consulta AWS EBS CSI Driver su. GitHub

Considerazioni

Nota

È possibile distribuire carichi di lavoro solo in base alla modalità EKS Auto Mode sui nodi EKS Auto Mode StorageClasses . Se hai un cluster con tipi misti di nodi, devi configurare i carichi di lavoro in modo che vengano eseguiti solo sui nodi EKS Auto Mode. Per ulteriori informazioni, consulta Controllare se un carico di lavoro viene implementato sui nodi di EKS Auto Mode.

La funzionalità di storage a blocchi di EKS Auto Mode è diversa da quella del driver CSI EBS.

  • Provisioning statico

    • Se desideri utilizzare volumi EBS creati esternamente con EKS Auto Mode, devi aggiungere manualmente un AWS tag con la chiave eks:eks-cluster-name e il valore del nome del cluster.

  • Taint startup del nodo

    • Non è possibile usare la funzionalità taint startup del nodo per impedire la pianificazione dei pod prima che la capacità di storage sia pronta

  • Tag personalizzati su volumi con provisioning dinamico

    • Non è possibile usare il flag CLI extra-tag per configurare tag personalizzati su volumi EBS con provisioning dinamico

    • Puoi usare l’assegnazione di tag StorageClass per aggiungere tag personalizzati. EKS Auto Mode aggiungerà tag alle risorse associate. AWS Dovrai aggiornare il ruolo del IAM cluster per i tag personalizzati. Per ulteriori informazioni, consulta Tag personalizzati per AWS le risorse EKS Auto.

  • Metriche sulle prestazioni dettagliate di EBS

    • Non puoi accedere alle metriche di Prometheus per le prestazioni dettagliate di EBS

Installa il componente aggiuntivo CSI Snapshot Controller

EKS Auto Mode è compatibile con il componente aggiuntivo CSI Snapshot Controller di Amazon EKS.

AWS suggerisce di configurare questo componente aggiuntivo per l'esecuzione nel pool di system nodi integrato.

Per ulteriori informazioni, consulta:

Per installare il controller di snapshot nel pool di nodi di sistema

  1. Apri il tuo cluster EKS nella console AWS

  2. Nella scheda Componenti aggiuntivi, seleziona Ottieni altri componenti aggiuntivi

  3. Seleziona il controller CSI Snapshot e poi Avanti

  4. Nella pagina Configura le impostazioni dei componenti aggiuntivi selezionati, seleziona Impostazioni di configurazione opzionali per visualizzare lo schema di configurazione dei componenti aggiuntivi

    1. Inserisci il seguente yaml per associare il controller di snapshot al pool di nodi system. Il controller di snapshot include una tolleranza per il taint CriticalAddonsOnly.

      { "nodeSelector": { "karpenter.sh/nodepool": "system" } }
    2. Seleziona Avanti

  5. Esamina la configurazione del componente aggiuntivo, poi seleziona Crea