Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
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 inoltre la StorageClass per usare le 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: specificandomatchLabelExpressionsin modo che corrisponda coneks.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 laStorageClass. EBS userà l’alias chiave predefinitoaws/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:
-
Creare una chiave KMS gestita dal cliente.
-
Per ulteriori informazioni, consulta Create a symmetric encryption KMS key o How Amazon Elastic Block Store (Amazon EBS) uses KMS nella Guida per gli utenti di KMS.
-
-
Creare una nuova policy che consenta l’accesso alla chiave KMS.
-
Usa la policy IAM di esempio riportata di seguito per creare la policy. Inserisci l’ARN della nuova chiave KMS autogestita. Per ulteriori informazioni, consulta Creating roles and attaching policies (console) nella Guida per l’utente IAM AWS.
-
-
Collegare la policy al ruolo del cluster EKS.
-
Usa la console AWS per trovare l’ARN del ruolo del cluster EKS. Le informazioni relative al ruolo sono visibili nella sezione Panoramica. Per ulteriori informazioni, consulta Ruolo IAM del cluster Amazon EKS.
-
-
Aggiornare la
StorageClassper fare riferimento all’ID della chiave KMS nel campoparameters.kmsKeyId.
Esempio di policy IAM KMS autogestita
Aggiorna i valori seguenti nella policy riportata di seguito:
-
<account-id>: l’ID del tuo account AWS, ad esempio111122223333 -
<aws-region>: la regione AWS del tuo cluster, ad esempious-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" } } } ] }
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
La sezione parameters della risorsa StorageClass è specifica per AWS. Utilizza la tabella seguente per esaminare le opzioni disponibili.
| Parametri | Valori | Predefinito | Descrizione |
|---|---|---|---|
|
“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. Possono essere specificate per i volumi IO1, IO2 e GP3. |
||
|
“allowAutoIOPSPerGBIncrease” |
true, false |
false |
Se impostato su |
|
“iops” |
Operazioni di I/O al secondo. Possono essere specificate per i volumi IO1, IO2 e 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 userà la chiave KMS predefinita per la regione in cui si trova il volume. Si tratta di una chiave generata automaticamente chiamata |
||
|
“blockSize” |
La dimensione del blocco da utilizzare per la formattazione del filesystem sottostante. Supportata solo sui nodi linux e con fstype |
||
|
“inodeSize” |
La dimensione dell’inode da utilizzare per la formattazione del filesystem sottostante. Supportata solo sui nodi linux e con fstype |
||
|
“bytesPerInode” |
|
||
|
“numberOfInodes” |
|
||
|
“ext4BigAlloc” |
true, false |
false |
Modifica il filesystem |
|
“ext4ClusterSize” |
La dimensione del cluster da usare per formattare un filesystem |
Per ulteriori informazioni, consulta AWS EBS CSI Driver
Considerazioni
Nota
È possibile implementare carichi di lavoro solo in base alle StorageClasses EKS Auto Mode sui nodi EKS Auto Mode. 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 vuoi usare volumi EBS creati esternamente con EKS Auto Mode, devi aggiungere manualmente un tag AWS con la chiave
eks:eks-cluster-namee 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
StorageClassper aggiungere tag personalizzati. EKS Auto Mode aggiungerà tag alle risorse AWS associate. Dovrai aggiornare il ruolo del IAM cluster per i tag personalizzati. Per ulteriori informazioni, consulta Tag AWS personalizzati per 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 consiglia di configurare questo componente aggiuntivo per l’esecuzione nel pool di nodi system integrato.
Per ulteriori informazioni, consultare:
Per installare il controller di snapshot nel pool di nodi di sistema
-
Apri il cluster EKS nella console AWS
-
Nella scheda Componenti aggiuntivi, seleziona Ottieni altri componenti aggiuntivi
-
Seleziona il controller CSI Snapshot e poi Avanti
-
Nella pagina Configura le impostazioni dei componenti aggiuntivi selezionati, seleziona Impostazioni di configurazione opzionali per visualizzare lo schema di configurazione dei componenti aggiuntivi
-
Inserisci il seguente yaml per associare il controller di snapshot al pool di nodi
system. Il controller di snapshot include una tolleranza per il taintCriticalAddonsOnly.{ "nodeSelector": { "karpenter.sh/nodepool": "system" } } -
Seleziona Avanti
-
-
Esamina la configurazione del componente aggiuntivo, poi seleziona Crea