Google Kubernetes Engine (GKE) offre un modo semplice per eseguire automaticamente il deployment e gestire il driver CSI (Container Storage Interface) per i dischi permanenti di Compute Engine nei tuoi cluster. Il driver CSI per il disco permanente di Compute Engine è sempre abilitato nei cluster Autopilot e non può essere disattivato o modificato. Nei cluster standard, devi abilitare il driver CSI per il disco permanente di Compute Engine.
La versione del driver CSI per il disco permanente di Compute Engine è legata ai numeri di versione di GKE. La La versione del driver CSI per il disco permanente di Compute Engine è in genere il driver più recente disponibile al momento che la versione di GKE viene rilasciata. I driver si aggiornano automaticamente quando viene eseguito l'upgrade del cluster all'ultima patch GKE.
Vantaggi
L'utilizzo del driver CSI per il disco permanente di Compute Engine offre i seguenti vantaggi:
- Consente il deployment e la gestione automatici del driver del disco permanente senza doverli configurare manualmente.
- Puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK). Queste chiavi sono utilizzate per criptare le chiavi di crittografia dei dati che criptano i tuoi dati. Per apprendere su CMEK su GKE, consulta Utilizzo di CMEK.
- Puoi utilizzare la modalità snapshot dei volumi con il driver CSI per il disco permanente di Compute Engine. Gli snapshot del volume ti consentono di creare una copia del volume in un determinato momento. Puoi utilizzare questa copia per trasferire per ripristinare lo stato precedente o eseguire il provisioning di un nuovo volume.
- Puoi utilizzare la clonazione dei volumi con il driver CSI del disco permanente di Compute Engine nei cluster che eseguono GKE versione 1.22 e successive. La clonazione del volume ti consente di creare un duplicato del volume in un determinato momento, con il provisioning di tutti i dati del volume di origine.
- Le correzioni di bug e gli aggiornamenti delle funzionalità vengono implementati indipendentemente dalle release minori di Kubernetes. In genere, questo programma di rilascio comporta una maggiore frequenza di rilascio.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
eseguendo
gcloud components update
.
Requisiti
Per utilizzare il driver CSI per il disco permanente di Compute Engine, i cluster devono utilizzare le seguenti versioni:
- Cluster Linux: GKE versione 1.14 o successiva.
- Cluster Windows: GKE versione 1.18 o successiva.
Nella versione 1.22 e successive, la migrazione CSI è abilitata. Viene eseguita la migrazione dei volumi esistenti che utilizzano il provider gce-pd
a
possono comunicare tramite driver CSI. Non sono necessarie modifiche a StorageClass. Il fornitore gce-pd
continua a non supportare funzionalità come CMEK o gli snapshot dei volumi. Devi utilizzare pd.csi.storage.gke.io
in StorageClass per abilitare queste funzionalità.
Per utilizzare il driver CSI del disco permanente di Compute Engine con la federazione delle identità per i carichi di lavoro per GKE, i cluster standard devono utilizzare le seguenti versioni:
- Cluster Linux: GKE versione 1.16 o successive.
- Cluster Windows: GKE versione 1.20.8-gke.900 o successive.
Abilitazione del driver CSI per il disco permanente di Compute Engine su un nuovo cluster
Per creare un cluster Standard con una versione in cui il driver CSI per il disco permanente di Compute Engine non viene abilitato automaticamente, puoi utilizzare Google Cloud CLI o nella console Google Cloud.
Per abilitare il driver nella creazione del cluster, completa i seguenti passaggi:
gcloud
gcloud container clusters create CLUSTER-NAME \
--addons=GcePersistentDiskCsiDriver \
--cluster-version=VERSION
Sostituisci quanto segue:
CLUSTER-NAME
: il nome del tuo cluster.VERSION
: il numero di versione di GKE. Per utilizzare questa funzionalità, devi selezionare una versione 1.14 o successiva.
Per l'elenco completo dei flag, consulta la documentazione di gcloud container clusters create
.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Fai clic su add_box Crea.
Nella sezione Standard, fai clic su Configura.
Configura il cluster come preferisci.
Nel riquadro di navigazione, in Cluster, fai clic su Funzionalità.
Seleziona la casella di controllo Abilita il driver CSI per il disco permanente di Compute Engine.
Fai clic su Crea.
Dopo aver abilitato il driver CSI per il disco permanente di Compute Engine, puoi utilizzarlo in Kubernetes
volumi utilizzando il nome del driver e del provisioner: pd.csi.storage.gke.io
.
Abilitazione del driver CSI per il disco permanente di Compute Engine su un cluster esistente
Per abilitare il driver CSI per il disco permanente di Compute Engine nei cluster Standard esistenti, utilizza Google Cloud CLI o la console Google Cloud.
Per abilitare il driver su un cluster esistente:
gcloud
gcloud container clusters update CLUSTER-NAME \
--update-addons=GcePersistentDiskCsiDriver=ENABLED
Sostituisci CLUSTER-NAME
con il nome del cluster esistente.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.
In Funzionalità, accanto a CSI del disco permanente di Compute Engine Driver, fai clic su edit Modifica elaborazione Driver CSI del motore.
Seleziona la casella di controllo Abilita il driver CSI per il disco permanente di Compute Engine.
Fai clic su Salva modifiche.
Disabilitazione del driver CSI per il disco permanente di Compute Engine
Puoi disattivare il driver CSI del disco permanente di Compute Engine per i cluster standard utilizzando Google Cloud CLI o la console Google Cloud.
Se disabiliti il driver, vengono eseguiti tutti i pod che al momento utilizzano oggetti PersistentVolume di proprietà del conducente non si annullano. Qualsiasi nuovo pod che tenta di utilizzare anche questi PersistentVolume non si avviano.
Per disattivare il driver in un cluster standard esistente, completa i seguenti passaggi:
gcloud
gcloud container clusters update CLUSTER-NAME \
--update-addons=GcePersistentDiskCsiDriver=DISABLED
Sostituisci CLUSTER-NAME
con il nome del cluster esistente.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.
In Funzionalità, accanto a CSI del disco permanente di Compute Engine Driver, fai clic su edit Modifica elaborazione Driver CSI del motore.
Deseleziona la casella di controllo Abilita driver CSI per il disco permanente di Compute Engine.
Fai clic su Salva modifiche.
Utilizzo del driver CSI per il disco permanente di Compute Engine per i cluster Linux
Le seguenti sezioni descrivono il processo tipico per l'utilizzo di un oggetto Kubernetes supportato da un driver CSI in GKE. Queste sezioni sono specifiche per i cluster che utilizzano Linux.
Creazione di un oggetto StorageClass
Dopo aver attivato il driver CSI del disco permanente di Compute Engine, GKE installa automaticamente i seguenti StorageClass:
standard-rwo
, utilizzando un disco permanente bilanciatopremium-rwo
, utilizzando un disco permanente SSD
Per i cluster Autopilot, StorageClass predefinito è standard-rwo
,
che utilizza il driver CSI del disco permanente di Compute Engine. Per i cluster standard, la StorageClass predefinita utilizza il plug-in dei volumi gcePersistentDisk
in-tree di Kubernetes.
Puoi trovare il nome degli oggetti StorageClass installati eseguendo il comando seguente :
kubectl get sc
Puoi anche installare un oggetto StorageClass diverso che utilizza il driver CSI per il disco permanente di Compute Engine
aggiungendo pd.csi.storage.gke.io
nel campo del provisioner.
Ad esempio, potresti creare un'etichetta
StorageClass utilizzando il seguente file denominato pd-example-class.yaml
:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: pd-balanced
Puoi specificare quanto segue:
tipi di dischi permanenti
nel parametro type
:
pd-balanced
pd-ssd
pd-standard
pd-extreme
(supportato su GKE versione 1.26 e successive)
Se utilizzi pd-standard
o pd-extreme
, vedi
Tipi di macchine non supportati per ulteriori limitazioni di utilizzo.
Quando utilizzi l'opzione pd-extreme
, devi anche aggiungere il campo provisioned-iops-on-create
al tuo
del file manifest. Questo campo deve essere impostato sullo stesso valore del valore IOPS di cui è stato eseguito il provisioning specificato quando hai creato il disco persistente.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-extreme-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: pd-extreme
provisioned-iops-on-create: '10000'
Dopo aver creato il file pd-example-class.yaml
, esegui il seguente comando:
kubectl create -f pd-example-class.yaml
Crea un PersistentVolumeClaim
Puoi creare un oggetto PersistentVolumeClaim che fa riferimento al driver CSI del disco permanente di Compute Engine StorageClass.
Il file seguente, denominato pvc-example.yaml
, utilizza la classe di archiviazione preinstallata
standard-rwo
:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: podpvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: standard-rwo
resources:
requests:
storage: 6Gi
Dopo aver creato il manifest PersistentVolumeClaim, esegui il seguente comando:
kubectl create -f pvc-example.yaml
Nel file StorageClass (standard-rwo
) preinstallato, volumeBindingMode
è impostato su WaitForFirstConsumer
. Quando il criterio volumeBindingMode
è impostato su
WaitForFirstConsumer
, non viene eseguito il provisioning del PersistentVolume finché non viene
il riferimento a PersistentVolumeClaim è pianificato. Se volumeBindingMode
in
l'oggetto StorageClass è impostato su Immediate
(o viene omesso), un
viene eseguito il provisioning di un PersistentVolume supportato da disco permanente
Viene creato un oggetto PersistentVolumeClaim.
Crea un pod che utilizza il volume
Se utilizzi i pod con oggetti PersistentVolume, ti consigliamo di usare un carico di lavoro un controller di deployment (ad esempio un oggetto Deployment o StatefulSet). Anche se in genere non capita usa un pod autonomo, nell'esempio seguente ne viene usato uno per semplicità.
L'esempio seguente utilizza il volume creato nella sezione precedente:
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
containers:
- name: web-server
image: nginx
volumeMounts:
- mountPath: /var/lib/www/html
name: mypvc
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: podpvc
readOnly: false
Utilizzo del driver CSI per il disco permanente di Compute Engine per i cluster Windows
Le sezioni seguenti descrivono la procedura tipica per l'utilizzo di un volume Kubernetes supportato da un driver CSI in GKE. Queste sezioni sono specifiche dei cluster con Windows.
Assicurati che:
- La versione del cluster è 1.19.7-gke.2000, 1.20.2-gke.2000 o successiva.
- Le versioni dei nodi sono 1.18.12-gke.1203, 1.19.6-gke.800 o successive.
Crea una classe StorageClass
La creazione di un oggetto StorageClass per Windows è molto simile a quella di Linux. Tieni conto che la classe di archiviazione installata per impostazione predefinita non funzionerà per Windows perché il tipo di file system è diverso. Il driver CSI per il disco permanente di Compute Engine per Windows richiedeNTFS
come tipo di file system.
Ad esempio, puoi creare un StorageClass utilizzando il seguente file denominato pd-
windows-class.yaml
. Assicurati di aggiungere csi.storage.k8s.io/fstype: NTFS
al
dell'elenco di parametri:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: pd-sc-windows
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: pd-balanced
csi.storage.k8s.io/fstype: NTFS
Crea un PersistentVolumeClaim
Dopo aver creato una classe di archiviazione per Windows, ora puoi creare un claim volume permanente che fa riferimento a quella classe di archiviazione:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: podpvc-windows
spec:
accessModes:
- ReadWriteOnce
storageClassName: pd-sc-windows
resources:
requests:
storage: 6Gi
Crea un pod che consuma il volume
L'esempio seguente utilizza il volume creato nell'attività precedente:
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
nodeSelector:
kubernetes.io/os: windows
containers:
- name: iis-server
image: mcr.microsoft.com/windows/servercore/iis
ports:
- containerPort: 80
volumeMounts:
- mountPath: /var/lib/www/html
name: mypvc
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: podpvc-windows
readOnly: false
Utilizzo del driver CSI per il disco permanente di Compute Engine con tipi di file system non predefiniti
Il tipo di file system predefinito per i dischi permanenti di Compute Engine in GKE
è ext4
. Puoi anche utilizzare il tipo di archiviazione xfs
, purché l'immagine del tuo nodo
la supporta. Consulta Supporto dei driver di archiviazione per un elenco dei driver supportati in base all'immagine del nodo.
Il seguente esempio mostra come utilizzare xfs
come tipo di file system predefinito
invece di ext4
con il driver CSI per il disco permanente di Compute Engine.
Crea una classe StorageClass
Salva il seguente manifest come file YAML denominato
pd-xfs-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: xfs-class provisioner: pd.csi.storage.gke.io parameters: type: pd-balanced csi.storage.k8s.io/fstype: xfs volumeBindingMode: WaitForFirstConsumer
Applica il manifest:
kubectl apply -f pd-xfs-class.yaml
crea un PersistentVolumeClaim
Salva il seguente manifest come
pd-xfs-pvc.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: xfs-pvc spec: storageClassName: xfs-class accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
Applica il manifest:
kubectl apply -f pd-xfs-pvc.yaml
Crea un pod che consuma il volume
Salva il seguente manifest come
pd-xfs-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: pd-xfs-pod spec: containers: - name: cloud-sdk image: google/cloud-sdk:slim args: ["sleep","3600"] volumeMounts: - mountPath: /xfs name: xfs-volume volumes: - name: xfs-volume persistentVolumeClaim: claimName: xfs-pvc
Applica il manifest:
kubectl apply -f pd-xfs-pod.yaml
Verifica che il volume sia stato montato correttamente
Apri una sessione di shell nel pod:
kubectl exec -it pd-xfs-pod -- /bin/bash
Cerca
xfs
partizioni:df -aTh --type=xfs
L'output dovrebbe essere simile al seguente:
Filesystem Type Size Used Avail Use% Mounted on /dev/sdb xfs 30G 63M 30G 1% /xfs
Visualizza i log per il driver CSI per il disco permanente di Compute Engine
Puoi utilizzare Cloud Logging per visualizzare gli eventi relativi al driver CSI per il disco permanente di Compute Engine. I log possono aiutarti a risolvere i problemi.
Per saperne di più su Cloud Logging, consulta Visualizzazione dei log di GKE.
Per visualizzare i log per il driver CSI per il disco permanente di Compute Engine:
Vai alla pagina Cloud Logging nella console Google Cloud.
Esegui questa query:
resource.type="k8s_container" resource.labels.project_id="PROJECT_ID" resource.labels.location="LOCATION" resource.labels.cluster_name="CLUSTER_NAME" resource.labels.namespace_name="kube-system" resource.labels.container_name="gce-pd-driver"
Sostituisci quanto segue:
PROJECT_ID
: il nome del progetto.LOCATION
: la regione o la zona Compute Engine del cluster.CLUSTER_NAME
: il nome del tuo cluster.
Problemi noti
Tipi di macchine non supportati
Se utilizzi la famiglia di macchine della serie C3, il campo pd-standard
tipo di disco non supportato.
Se provi a eseguire un pod su una macchina e il pod utilizza un tipo di disco persistente non supportato, viene visualizzato un messaggio di avviso come il seguente nel pod:
AttachVolume.Attach failed for volume "pvc-d7397693-5097-4a70-9df0-b10204611053" : rpc error: code = Internal desc = unknown Attach error: failed when waiting for zonal op: operation operation-1681408439910-5f93b68c8803d-6606e4ed-b96be2e7 failed (UNSUPPORTED_OPERATION): [pd-standard] features are not compatible for creating instance.
Se il tuo cluster ha più pool di nodi con famiglie di macchine diverse, puoi utilizzare
incompatibilità dei nodi
e
affinità nodo
per limitare la pianificazione dei carichi di lavoro. Ad esempio, puoi utilizzare questo approccio per impedire a un carico di lavoro che utilizza pd-standard
di essere eseguito su una famiglia di macchine non supportata.
Se utilizzi il tipo di disco permanente pd-extreme
, devi assicurarti che il disco sia collegato a un'istanza VM con una forma della macchina adatta. Per scoprire di più, consulta Supporto per la forma delle macchine.
Passaggi successivi
- Scopri come utilizzare l'espansione del volume.
- Scopri come utilizzare gli snapshot dei volumi.
- Scopri come utilizzare la clonazione dei volumi.
- Scopri di più sul driver su GitHub.