Questo documento spiega come creare una copia o uno snapshot di un volume di archiviazione in un momento specifico per la tua applicazione container. Uno snapshot del volume consente di riportare un volume a uno stato precedente o di eseguire il provisioning di un nuovo volume.
Questo documento è rivolto agli sviluppatori del gruppo di operatori di applicazioni, responsabili della creazione dei workload delle applicazioni per la propria organizzazione. Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC con air gap.
Prima di iniziare
Per completare le attività descritte in questo documento, devi richiedere le autorizzazioni necessarie e preparare l'ambiente.
Richiedi ruoli IAM
Devi disporre di ruoli specifici per ottenere le autorizzazioni necessarie per creare snapshot dei volumi. I ruoli necessari dipendono dal fatto che tu stia lavorando all'interno di un cluster condiviso con ambito a livello di organizzazione o di un cluster standard con ambito a livello di progetto. Per saperne di più, consulta Configurazioni dei cluster Kubernetes.
Ruoli cluster condivisi
Per creare, eliminare, modificare o visualizzare gli snapshot dei volumi in un cluster condiviso, chiedi all'amministratore del progetto IAM di concederti il ruolo Namespace Admin (namespace-admin).
Questo ruolo è associato allo spazio dei nomi del progetto.
Ruoli cluster standard
Per creare, eliminare, modificare o visualizzare gli snapshot dei volumi in un cluster standard, chiedi all'amministratore del progetto IAM di concederti il ruolo Sviluppatore cluster (cluster-developer). Questo ruolo è associato allo spazio dei nomi del progetto.
prepara l'ambiente
Per eseguire comandi su un cluster Kubernetes utilizzando l'API, assicurati di disporre delle seguenti risorse:
Individua il nome del cluster Kubernetes o chiedi a un membro del gruppo di amministratori della piattaforma qual è il nome del cluster.
Accedi e genera il file kubeconfig per il cluster Kubernetes.
Utilizza il percorso kubeconfig del cluster Kubernetes per sostituire
KUBERNETES_CLUSTER_KUBECONFIGin queste istruzioni.
Acquisisci uno snapshot del volume
Per acquisire uno snapshot di un oggetto PersistentVolumeClaim, crea un oggetto VolumeSnapshot. Il sistema non garantisce la coerenza dei dati. Metti in pausa l'applicazione e svuota i dati prima di creare uno snapshot.
Crea una risorsa personalizzata
VolumeSnapshot:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: VOLUME_SNAPSHOT_NAME spec: source: persistentVolumeClaimName: PVC_NAME EOFSostituisci quanto segue:
KUBERNETES_CLUSTER_KUBECONFIG: il file kubeconfig per il cluster.NAMESPACE: lo spazio dei nomi in cui creare lo snapshot del volume. Per i cluster condivisi, deve essere uno spazio dei nomi del progetto. Per i cluster standard, può essere qualsiasi spazio dei nomi.VOLUME_SNAPSHOT_NAME: il nome dell'oggettoVolumeSnapshot.PVC_NAME: il nome della PVC per cui stai creando uno snapshot.
L'operazione di snapshot è completata quando il campo
.status.readyToUsediventatrue. Puoi utilizzare il seguente comando per controllare lo stato:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \ -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'Aggiorna il manifest della PVC con lo snapshot del volume specificato come origine dati:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: PVC_NAME spec: dataSource: name: VOLUME_SNAPSHOT_NAME kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: standard-rwo accessModes: - ReadWriteOnce resources: requests: storage: 10Gi EOFSostituisci quanto segue:
KUBERNETES_CLUSTER_KUBECONFIG: il file kubeconfig per il cluster.NAMESPACE: lo spazio dei nomi in cui esiste la risorsa PVC. Per i cluster condivisi, deve essere uno spazio dei nomi del progetto. Per i cluster standard, può essere qualsiasi spazio dei nomi.PVC_NAME: il nome della PVC per cui stai creando uno snapshot.VOLUME_SNAPSHOT_NAME: il nome dello snapshot del volume.