Il driver CSI per il disco permanente di Compute Engine è il modo principale per accedere all'archiviazione Hyperdisk con i cluster GKE.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività, installa e initialize gcloud CLI. Se hai già installato gcloud CLI, scarica 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 i cluster Linux che eseguono GKE versione 1.26 o successiva. Se utilizzi un canale di rilascio, assicurati che abbia la versione minima di GKE o successiva richiesta per questo driver.
- Assicurati che il driver CSI del disco permanente di Compute Engine sia abilitato. Il driver del disco permanente di Compute Engine è abilitato per impostazione predefinita sui nuovi cluster Autopilot e Standard e non può essere disabilitato o modificato quando si utilizza Autopilot. Se devi aggiungere o rimuovere manualmente il driver CSI del disco permanente di Compute Engine dal cluster, consulta Abilitazione del driver CSI del disco permanente di Compute Engine su un cluster esistente.
Crea 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.
Creazione di un oggetto StorageClass
I seguenti
campi Type
di archiviazione su disco permanente
sono forniti dal driver CSI del disco permanente di Compute Engine per supportare
Hyperdisk:
hyperdisk-balanced
hyperdisk-throughput
hyperdisk-extreme
Per creare un nuovo oggetto StorageClass con il livello di velocità effettiva o IOPS desiderato, utilizza pd.csi.storage.gke.io
nel campo provisioner e specifica uno dei tipi di archiviazione Hypeperdisk.
Ogni tipo di Hyperdisk ha valori predefiniti per le prestazioni determinate dalla dimensione iniziale del disco di cui è stato eseguito il provisioning. Durante la creazione dell'oggetto StorageClass, puoi specificare facoltativamente i seguenti parametri a seconda del tipo di Hyperdisk. Se ometti questi parametri, GKE utilizza i valori predefiniti del tipo di disco basati sulla capacità.
Parametro | Tipo di hyperdisk | Utilizzo |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk bilanciata, velocità effettiva Hyperdisk | Esprimi il valore della velocità effettiva in MiBps utilizzando il qualificatore "Mi". Ad esempio, se la velocità effettiva richiesta è di 250 MiBps, specifica "250Mi" durante la creazione di StorageClass. |
provisioned-iops-on-create |
Hyperdisk bilanciato, IOPS Hyperdisk | Il valore IOPS deve essere espresso senza qualificatori; ad esempio, se sono richieste 7000 IOPS, specifica "7000" durante la creazione di StorageClass. |
Per indicazioni sui valori consentiti per velocità effettiva o IOPS, vedi Pianificare il livello di prestazioni per il volume Hyperdisk.
I seguenti esempi mostrano come creare un oggetto 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 il oggetto StorageClass:
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 il oggetto StorageClass:
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 il oggetto StorageClass:
kubectl create -f hdx-example-class.yaml
Per trovare il nome delle classi di archiviazione disponibili nel cluster, esegui questo comando:
kubectl get sc
Crea un PersistentVolumeClaim
Puoi creare un oggetto PersistentVolumeClaim che fa riferimento all'oggetto StorageClass del driver CSI del 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 di 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 l'oggetto PersistentVolumeClaim che fa riferimento al valore StorageClass che hai creato nell'esempio precedente:
kubectl apply -f pvc-example.yaml
Velocità effettiva Hyperdisk
In questo esempio, specifichi la capacità di archiviazione target del volume di velocità effettiva Hyperdisk come 2 TiB.
Salva il seguente manifest di 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 l'oggetto PersistentVolumeClaim che fa riferimento al valore StorageClass che hai creato nell'esempio precedente:
kubectl apply -f pvc-example.yaml
Hyperdisk Extreme
In questo esempio, specifichi la capacità minima di archiviazione del volume Hyperdisk Extreme come 64 GiB.
Salva il seguente manifest di 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 l'oggetto PersistentVolumeClaim che fa riferimento al valore StorageClass che hai creato nell'esempio precedente:
kubectl apply -f pvc-example.yaml
Crea un deployment per utilizzare il volume Hyperdisk
Quando usi pod con oggetti PersistentVolume, ti consigliamo di usare un controller dei carichi di lavoro (come un Deployment o uno 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 basato sul file manifest
hyperdisk-example-deployment.yaml
, esegui questo comando:kubectl apply -f hyperdisk-example-deployment.yaml
Verifica che il deployment sia stato creato correttamente:
kubectl get deployment
Il completamento del provisioning delle istanze Hyperdisk potrebbe richiedere alcuni minuti. Quando il deployment completa il provisioning, viene segnalato lo stato
READY
.Puoi verificare l'avanzamento monitorando lo stato di PersistentVolumeClaim eseguendo questo 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 Persistent Disk, consulta Creazione e utilizzo degli snapshot di 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 Istantanea.
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 sottoposta a provisioning o il valore IOPS sottoposte a provisioning che vuoi utilizzare per il disco, se diverso 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
: la dimensione del nuovo disco, in gigabyte (GiB) o tebibyte (TiB). 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 bilanciati Hypeperdisk, si tratta di un numero intero che rappresenta la velocità effettiva, misurata in MiBps, che il disco è in grado di gestire. Per le limitazioni più recenti, consulta la documentazione di Compute Engine.IOPS_LIMIT
: facoltativo. Per i dischi bilanciati Hypeperdisk, questo è il numero di IOPS che il disco è in grado di gestire. Per le limitazioni delle 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
: la dimensione, 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 per la velocità effettiva Hyperdisk, si tratta di un numero intero che rappresenta la velocità effettiva, misurata in MiBps, che il disco è in grado di gestire. Per le limitazioni delle 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
: la dimensione, 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, il numero di operazioni di I/O al secondo che il disco è in grado di gestire. Per le limitazioni delle prestazioni più recenti, consulta la documentazione di Compute Engine.
Creazione di uno snapshot per un volume Hyperdisk
Per creare uno snapshot da un volume Hyperdisk, segui gli stessi passaggi della creazione di uno snapshot per un volume di Persistent Disk:
Aggiorna la velocità effettiva o le IOPS sottoposte a provisioning di un volume Hyperdisk esistente
Questa sezione illustra come modificare le prestazioni di cui è stato eseguito il provisioning per i volumi Hypeperdisk.
Velocità effettiva
L'aggiornamento della velocità effettiva di cui è stato eseguito il provisioning è supportato solo per i volumi di velocità effettiva Hyperdisk bilanciata e Hyperdisk.
Per aggiornare il livello di velocità effettiva di cui è stato eseguito il provisioning del volume Hyperdisk, segui le istruzioni della console Google Cloud, di gcloud CLI o dell'API Compute Engine riportate in Modificare le prestazioni di cui è stato eseguito il provisioning per un volume Hyperdisk.
Puoi modificare il livello di velocità effettiva di cui è stato eseguito il provisioning (fino a una volta ogni 4 ore) per un volume Hyperdisk dopo la creazione del volume. L'applicazione dei nuovi livelli di velocità effettiva potrebbe richiedere fino a 15 minuti. Durante la variazione delle prestazioni, eventuali SLA (accordi sul livello del servizio) e SLO delle prestazioni non sono attivi. Puoi modificare il livello di velocità effettiva 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 velocità effettiva specificato deve rispettare i valori supportati per i volumi Hyperdisk.
IOPS
L'aggiornamento delle IOPS sottoposte a provisioning è supportato solo per i volumi Hyperdisk bilanciati 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, 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 IOPS di cui è stato eseguito il provisioning (fino a una volta ogni 4 ore) per un volume di 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, eventuali SLA (accordi sul livello del servizio) e SLO delle 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 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 che supporta le risorse PersistentVolumeClaim e PersistentVolume:
Vai a Browser degli oggetti nella console Google Cloud.
Trova la voce per l'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 simile a "
pvc-XXXXX
"). Questo è il nome dell'oggetto PersistentVolumeClaim. Dovresti anche prendere nota del progetto e della zona.
Monitoraggio della velocità effettiva o del numero di IOPS su un volume Hyperdisk
Per monitorare le prestazioni del volume Hyperdisk di cui è stato eseguito il provisioning, vedi Analizzare le IOPS e la velocità effettiva 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 prestazioni o capacità: rapporto fuori intervallo
Il seguente errore si verifica quando tenti di modificare il livello di prestazioni o la capacità di cui è stato eseguito il provisioning, ma il livello di prestazioni o la capacità che hai scelto non rientra 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.
La velocità effettiva di cui è stato eseguito il provisioning dei volumi di velocità effettiva Hyperdisk deve soddisfare i seguenti requisiti:
- Almeno 10 MiBps per TiB di capacità e non più di 90 MiBps per TiB di capacità.
- Al massimo 600 MiBps per volume.
Per risolvere il problema, correggi la velocità effettiva o la capacità richieste in modo che rientrino nell'intervallo consentito e invia nuovamente il comando.
Impossibile modificare il rendimento: tariffa limitata
Il seguente errore si verifica quando cerchi di modificare il livello di prestazioni di cui è stato eseguito il provisioning, ma il livello di prestazioni è già stato modificato nelle ultime 4 ore:
Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.
Le prestazioni di cui è stato eseguito il provisioning dei volumi Hyperdisk possono essere aggiornate una volta ogni 4 ore. Per risolvere il problema, attendi che termini il timer di raffreddamento per far scadere il volume, quindi esegui nuovamente il comando.
Passaggi successivi
- Scopri come eseguire la migrazione dei volumi di Persistent Disk a Hyperdisk.
- Scopri come utilizzare l'espansione del volume.
- Scopri come utilizzare gli snapshot dei volumi.
- Scopri di più sul driver su GitHub.