Il driver CSI per il disco permanente di Compute Engine è il modo principale per accedere allo spazio di archiviazione Hyperdisk con i cluster Google Kubernetes Engine (GKE).
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
- Imposta la regione e la zona predefinite su uno dei valori supportati.
Requisiti
Per utilizzare i volumi Hyperdisk in GKE, i cluster devono soddisfare i seguenti requisiti:
- Utilizza cluster Linux che eseguono GKE versione 1.26 o successive. Se utilizzi un canale di rilascio, assicurati che il canale abbia la versione minima di GKE o successiva obbligatoria per questo driver.
- Assicurati che il driver CSI per il disco permanente di Compute Engine sia abilitato. Il driver del disco permanente di Compute Engine è abilitato per impostazione predefinita nei nuovi cluster Autopilot e Standard e non può essere disabilitato o modificato quando si utilizza Autopilot. Se devi attivare il driver CSI per il disco permanente di Compute Engine dal tuo cluster, consulta Attivare il driver CSI per il disco permanente di Compute Engine in un cluster esistente.
Creare un volume Hyperdisk per GKE
Questa sezione fornisce una panoramica della creazione di un volume Hyperdisk supportato dal driver CSI di Compute Engine in GKE.
Crea una classe StorageClass
I seguenti
campi Type
di archiviazione dei dischi permanenti
vengono forniti dal driver CSI per il disco permanente di Compute Engine per supportare Hyperdisk:
hyperdisk-balanced
hyperdisk-throughput
hyperdisk-extreme
hyperdisk-ml
Per creare un nuovo StorageClass con il livello di throughput o IOPS desiderato, utilizza
pd.csi.storage.gke.io
nel campo del provisioner e specifica uno dei
tipi di archiviazione Hyperdisk.
Ogni tipo di hyperdisk ha valori predefiniti per le prestazioni determinati dalle dimensioni iniziali del disco di cui è stato eseguito il provisioning. Quando crei StorageClass, puoi specificare facoltativamente i seguenti parametri a seconda del tipo di Hyperdisk. Se ometti questi parametri, GKE utilizza i valori predefiniti per il tipo di disco in base alla capacità. Per indicazioni sui valori consentiti per il throughput o le IOPS, consulta Pianificare il livello di prestazioni per il volume Hyperdisk.
Parametro | Tipo di Hyperdisk | Utilizzo |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk bilanciato*, velocità effettiva Hyperdisk | Esprimere il valore della velocità effettiva in MiBps utilizzando il qualificatore "Mi". Ad esempio, se la velocità effettiva richiesta è 250 MiBps, specifica "250Mi" quando crei StorageClass. |
provisioned-iops-on-create |
Hyperdisk bilanciato, IOPS Hyperdisk | Il valore IOPS deve essere espresso senza alcun qualificatore. Ad esempio, se hai bisogno di 7000 IOPS, specifica "7000" durante la creazione di StorageClass. |
Gli esempi riportati di seguito mostrano come creare un StorageClass per ogni tipo di hyperdisk:
Hyperdisk bilanciato
Salva il seguente manifest in un file denominato
hdb-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000"
Crea la classe di archiviazione:
kubectl create -f hdb-example-class.yaml
Velocità effettiva Hyperdisk
Salva il seguente manifest in un file denominato
hdt-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: throughput-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-throughput provisioned-throughput-on-create: "50Mi"
Crea la classe di archiviazione:
kubectl create -f hdt-example-class.yaml
Hyperdisk Extreme
Salva il seguente manifest in un file denominato
hdx-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: extreme-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-extreme provisioned-iops-on-create: "50000"
Crea la classe di archiviazione:
kubectl create -f hdx-example-class.yaml
Per trovare il nome delle classi di archiviazione disponibili nel cluster, esegui il seguente comando:
kubectl get sc
Crea un PersistentVolumeClaim
Puoi creare una richiesta di volume persistente che fa riferimento a StorageClass del driver CSI per il disco permanente di Compute Engine.
Hyperdisk bilanciato
In questo esempio, specifichi la capacità di archiviazione target del volume Hyperdisk bilanciato come 20 GiB.
Salva il seguente manifest PersistentVolumeClaim in un file denominato
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: balanced-storage resources: requests: storage: 20Gi
Applica la richiesta di volume permanente che fa riferimento alla classe di archiviazione creata nell'esempio precedente:
kubectl apply -f pvc-example.yaml
Velocità effettiva Hyperdisk
In questo esempio, specifichi la capacità di archiviazione target del volume Hyperdisk Throughput come 2 TiB.
Salva il seguente manifest PersistentVolumeClaim in un file denominato
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: throughput-storage resources: requests: storage: 2Ti
Applica la richiesta di volume permanente che fa riferimento alla classe di archiviazione creata nell'esempio precedente:
kubectl apply -f pvc-example.yaml
Hyperdisk Extreme
In questo esempio, specifichi la capacità di archiviazione minima del volume Hyperdisk Extreme come 64 GiB.
Salva il seguente manifest PersistentVolumeClaim in un file denominato
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: extreme-storage resources: requests: storage: 64Gi
Applica la richiesta di volume permanente che fa riferimento alla classe di archiviazione creata nell'esempio precedente:
kubectl apply -f pvc-example.yaml
Crea un deployment per utilizzare il volume Hyperdisk
Quando utilizzi i pod con i volumi permanenti, ti consigliamo di utilizzare un controller del carico di lavoro (ad esempio un deployment o un StatefulSet).
L'esempio seguente crea un manifest che configura un pod per il deployment di un server web Nginx utilizzando l'oggetto PersistentVolumeClaim creato nella sezione precedente. Salva il seguente manifest di esempio come
hyperdisk-example-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: web-server-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /var/lib/www/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: podpvc readOnly: false
Per creare un deployment in base al file manifest
hyperdisk-example-deployment.yaml
, esegui il seguente comando:kubectl apply -f hyperdisk-example-deployment.yaml
Verifica che il deployment sia stato creato correttamente:
kubectl get deployment
Potrebbero essere necessari alcuni minuti per completare il provisioning delle istanze Hyperdisk. Al termine del provisioning, il deployment riporta uno stato
READY
.Puoi controllare l'avanzamento monitorando lo stato di PersistentVolumeClaim eseguendo il seguente comando:
kubectl get pvc
Esegui il provisioning di un volume Hyperdisk da uno snapshot
Per creare un nuovo volume Hyperdisk da uno snapshot di Persistent Disk esistente, utilizza la console Google Cloud, Google Cloud CLI o l'API Compute Engine. Per scoprire come creare uno snapshot di un Persistent Disk, consulta Creare e utilizzare gli snapshot dei volumi.
Console
Vai alla pagina Dischi nella console Google Cloud.
Fai clic su Crea disco.
In Tipo di disco, scegli una delle seguenti opzioni per il tipo di disco:
- Hyperdisk bilanciato
- Hyperdisk Extreme
- Velocità effettiva Hyperdisk
In Tipo di disco di origine, fai clic su Snapshot.
Seleziona il nome dello snapshot da ripristinare.
Seleziona le dimensioni del nuovo disco in GiB. Questo numero deve essere uguale o superiore al disco di origine originale per lo snapshot.
Imposta la velocità effettiva o le IOPS provisionate che vuoi per il disco, se diverse dai valori predefiniti.
Fai clic su Crea per creare il volume Hyperdisk.
gcloud
Esegui il comando gcloud compute disks create
per creare il volume Hyperdisk da uno snapshot.
Hyperdisk bilanciato
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced
Sostituisci quanto segue:
DISK_NAME
: il nome del nuovo disco.SIZE
: le dimensioni, in gibibyte (GiB) o tebibyte (TiB), del nuovo disco. Per le limitazioni di capacità più recenti, consulta la documentazione di Compute Engine.SNAPSHOT_NAME
: il nome dello snapshot da ripristinare.THROUGHPUT_LIMIT
: facoltativo. Per i dischi Hyperdisk Balanced, si tratta di un numero intero che rappresenta la velocità effettiva, misurata in MiBps, che il disco può gestire. Per le limitazioni più recenti, consulta la documentazione di Compute Engine.IOPS_LIMIT
: facoltativo. Per i dischi Hyperdisk bilanciati, si tratta del numero di IOPS che il disco può gestire. Per le limitazioni di prestazioni più recenti, consulta la documentazione di Compute Engine.
Velocità effettiva Hyperdisk
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--type=hyperdisk-throughput
Sostituisci quanto segue:
DISK_NAME
: il nome del nuovo disco.SIZE
: le dimensioni, in gibibyte (GiB o GB) o tebibyte (TiB o TB), del nuovo disco. Per le limitazioni di capacità più recenti, consulta la documentazione di Compute Engine.SNAPSHOT_NAME
: il nome dello snapshot da ripristinare.THROUGHPUT_LIMIT
: facoltativo. Per i dischi con velocità effettiva Hyperdisk, si tratta di un numero intero che rappresenta la velocità effettiva, misurata in MiBps, che il disco può gestire. Per le limitazioni di prestazioni più recenti, consulta la documentazione di Compute Engine.
Hyperdisk Extreme
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-iops
Sostituisci quanto segue:
DISK_NAME
: il nome del nuovo disco.SIZE
: le dimensioni, in gibibyte (GiB o GB) o tebibyte (TiB o TB), del nuovo disco. Per le limitazioni di capacità più recenti, consulta la documentazione di Compute Engine.SNAPSHOT_NAME
: il nome dello snapshot da ripristinare.IOPS_LIMIT
(Facoltativo): per i dischi Hyperdisk Extreme, si tratta del numero di operazioni I/O al secondo che il disco può gestire. Per le limitazioni di prestazioni più recenti, consulta la documentazione di Compute Engine.
Creare uno snapshot per un volume Hyperdisk
Per creare uno snapshot da un volume Hyperdisk, segui gli stessi passaggi per creare uno snapshot per un volume del Persistent Disk:
Aggiornare il throughput o gli IOPS sottoposti a provisioning di un volume Hyperdisk esistente
Questa sezione spiega come modificare le prestazioni di provisioning per i volumi Hyperdisk.
Velocità effettiva
L'aggiornamento del throughput riservato è supportato solo per i volumi Hyperdisk Balanced e Hyperdisk Throughput.
Per aggiornare il livello di throughput di cui è stato eseguito il provisioning del volume Hyperdisk, segui le istruzioni della console Google Cloud, di gcloud CLI o dell'API Compute Engine in Modificare le prestazioni di cui è stato eseguito il provisioning per un volume Hyperdisk.
Puoi modificare il livello di throughput provisionato (fino a una volta ogni 4 ore) per un volume Hyperdisk dopo la creazione del volume. Per l'applicazione dei nuovi livelli di throughput potrebbero essere necessari fino a 15 minuti. Durante la modifica delle prestazioni, eventuali SLA e SLO relativi alle prestazioni non sono in vigore. Puoi modificare il livello di throughput di un volume esistente in qualsiasi momento, indipendentemente dal fatto che il disco sia collegato o meno a un'istanza in esecuzione.
Il nuovo livello di throughput specificato deve rispettare i valori supportati per i volumi Hyperdisk.
IOPS
L'aggiornamento delle IOPS sottoposte a provisioning è supportato solo per i volumi Hyperdisk Balanced e Hyperdisk Extreme.
Per aggiornare il livello di IOPS di cui è stato eseguito il provisioning del volume Hyperdisk, segui le istruzioni della console Google Cloud, gcloud CLI o dell'API Compute Engine in Modificare le prestazioni di cui è stato eseguito il provisioning per un volume Hyperdisk.
Puoi modificare il livello di IOPS di cui è stato eseguito il provisioning (fino a una volta ogni 4 ore) per un volume IOPS Hyperdisk dopo la creazione del volume. L'applicazione dei nuovi livelli di IOPS potrebbe richiedere fino a 15 minuti. Durante la variazione delle prestazioni, gli SLA e gli SLO relativi alle prestazioni non sono in vigore. Puoi modificare il livello IOPS di un volume esistente in qualsiasi momento, indipendentemente dal fatto che il disco sia collegato o meno a un'istanza in esecuzione.
Il nuovo livello di IOPS specificato deve rispettare i valori supportati per i volumi Hyperdisk.
Per aggiornare il livello di IOPS di cui è stato eseguito il provisioning per un volume Hyperdisk, devi identificare il nome del Persistent Disk di supporto delle risorse PersistentVolumeClaim e PersistentVolume:
Vai al Browser degli oggetti nella console Google Cloud.
Trova la voce relativa all'oggetto PersistentVolumeClaim.
Fai clic sul link Volume .
Apri la scheda YAML del PersistentVolume associato. Individua il valore CSI
volumeHandle
in questa scheda.Prendi nota dell'ultimo elemento di questo handle (dovrebbe avere un valore come "
pvc-XXXXX
"). Si tratta del nome del tuo PersistentVolumeClaim. Devi anche prendere nota del progetto e della zona.
Monitorare la velocità effettiva o le IOPS su un volume Hyperdisk
Per monitorare il rendimento del volume Hyperdisk di cui è stato eseguito il provisioning, consulta Analizzare le IOPS e il throughput di cui è stato eseguito il provisioning nella documentazione di Compute Engine.
Risoluzione dei problemi
Questa sezione fornisce indicazioni per la risoluzione dei problemi relativi ai volumi Hyperdisk su GKE.
Impossibile modificare le prestazioni o la capacità: rapporto fuori intervallo
Quando provi a modificare il livello di rendimento o la capacità di cui è stato eseguito il provisioning, viene visualizzato il seguente errore, poiché il livello di rendimento o la capacità che hai scelto non rientrano nell'intervallo accettabile per il volume:
Requested provisioned throughput cannot be higher than <value>.
Requested provisioned throughput cannot be lower than <value>.
Requested provisioned throughput is too high for the requested disk size.
Requested provisioned throughput is too low for the requested disk size.
Requested disk size is too high for current provisioned throughput.
Il throughput riservato per i volumi di throughput Hyperdisk deve soddisfare i seguenti requisiti:
- Almeno 10 MiBps per TiB di capacità e non più di 90 MiBps per TiB di capacità.
- Massimo 600 MiBps per volume.
Per risolvere il problema, correggi il throughput o la capacità richiesti in modo che rientrino nell'intervallo consentito e riassegna il comando.
Impossibile modificare il rendimento: frequenza limitata
Quando provi a modificare il livello di rendimento provisionato, ma questo è già stato modificato nelle ultime 4 ore, si verifica il seguente errore:
Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.
Il rendimento riservato dei volumi Hyperdisk Throughput e IOPS può essere aggiornato una volta ogni 4 ore. Per risolvere il problema, attendi il tempo di attesa del volume e poi emetti nuovamente il comando.
Passaggi successivi
- Scopri come eseguire la migrazione dei volumi dei Persistent Disk su Hyperdisk.
- Scopri come utilizzare l'espansione del volume.
- Scopri come utilizzare gli snapshot dei volumi.
- Scopri di più sul driver su GitHub.