

 **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
<a name="create-storage-class"></a>

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](https://docs.aws.amazon.com/ebs/latest/userguide/how-ebs-encryption-works.html) 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
<a name="_use_self_managed_kms_key_to_encrypt_ebs_volumes"></a>

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.
   + Per ulteriori informazioni, consulta [Create a symmetric encryption KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/create-symmetric-cmk.html) o [How Amazon Elastic Block Store (Amazon EBS) uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-ebs.html) nella Guida per gli utenti di KMS.

1. 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 [Creazione di ruoli e collegamento di politiche (console) nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions_create-policies.html) per l'utente AWS IAM.

1. 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](cluster-iam-role.md).

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

### Esempio di policy IAM KMS autogestita
<a name="_sample_self_managed_kms_iam_policy"></a>

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
<a name="_sample_self_managed_kms_storageclass"></a>

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

## Guida di riferimento per i parametri `StorageClass`
<a name="_storageclass_parameters_reference"></a>

Per informazioni generali sulle risorse `StorageClass` di Kubernetes, consulta [Storage Classes](https://kubernetes.io/docs/concepts/storage/storage-classes/) nella documentazione di Kubernetes.

THe `parameters`la 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](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/parameters.md) Driver su. GitHub

## Considerazioni
<a name="_considerations"></a>

**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](associate-workload.md).

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](auto-learn-iam.md#tag-prop).
+ 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
<a name="_install_csi_snapshot_controller_add_on"></a>

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:
+  [Eseguire componenti aggiuntivi critici su istanze dedicate](critical-workload.md) 
+  [Attivazione o disattivazione della funzionalità integrata NodePools](set-builtin-node-pools.md) 
+  [Abilitare la funzionalità snapshot per i volumi CSI](csi-snapshot-controller.md) 

### Per installare il controller di snapshot nel pool di nodi di sistema
<a name="auto-install-snapshot-controller"></a>

1. Apri il tuo cluster EKS nella console AWS 

1. Nella scheda **Componenti aggiuntivi**, seleziona **Ottieni altri componenti aggiuntivi** 

1. Seleziona il controller **CSI Snapshot** e poi **Avanti** 

1. 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"
              }
      }
      ```

   1. Seleziona **Avanti** 

1. Esamina la configurazione del componente aggiuntivo, poi seleziona **Crea** 