Migreren van in-tree-opslagklasse naar CSI-stuurprogramma's in Azure Kubernetes Service (AKS)
De implementatie van het CSI-stuurprogramma (Container Storage Interface) is geïntroduceerd in Azure Kubernetes Service (AKS) vanaf versie 1.21. Door CSI als standaard te gebruiken en te gebruiken, moeten uw bestaande stateful workloads met behulp van permanente volumes (CSV's) in de structuur worden gemigreerd of bijgewerkt om het CSI-stuurprogramma te gebruiken.
Om dit proces zo eenvoudig mogelijk te maken en om ervoor te zorgen dat er geen gegevens verloren gaan, biedt dit artikel verschillende migratieopties. Deze opties omvatten scripts om een soepele migratie van in-tree naar Azure Disks en Azure Files CSI-stuurprogramma's te garanderen.
Voordat u begint
- Azure CLI versie 2.37.0 of hoger. Voer
az --version
deze uit om de versie te vinden en voer deze uitaz upgrade
om de versie te upgraden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. - Kubectl- en clusterbeheerders hebben toegang tot inhoud voor het maken, ophalen, weergeven, verwijderen van toegang tot een PVC of PV, volumemomentopname of volumemomentopname. Voor een cluster met Microsoft Entra RBAC bent u lid van de rol RBAC-clusterbeheerder van Azure Kubernetes Service.
Schijfvolumes migreren
Notitie
De labels failure-domain.beta.kubernetes.io/zone
en failure-domain.beta.kubernetes.io/region
zijn afgeschaft in AKS 1.24 en verwijderd in 1.28. Als uw bestaande permanente volumes nog steeds gebruikmaken van nodeAffinity die overeenkomen met deze twee labels, moet u deze wijzigen in topology.kubernetes.io/zone
en topology.kubernetes.io/region
labels in de nieuwe permanente volume-instelling.
Migratie van in-tree naar CSI wordt ondersteund met behulp van twee migratieopties:
- Een statisch volume maken
- Een dynamisch volume maken
Een statisch volume maken
Met deze optie maakt u een HW door statisch toe te claimRef
wijzen aan een nieuw PVC dat u later gaat maken en het volumeName
voor persistentVolumeClaim op te geven.
De voordelen van deze aanpak zijn:
- Het is eenvoudig en kan worden geautomatiseerd.
- U hoeft de oorspronkelijke configuratie niet op te schonen met behulp van de in-tree-opslagklasse.
- Laag risico omdat u alleen een logische verwijdering van Kubernetes PV/PVC uitvoert, worden de werkelijke fysieke gegevens niet verwijderd.
- Er worden geen extra kosten in rekening gebracht als gevolg van het niet hoeven maken van extra Azure-objecten, zoals schijf, momentopnamen, enzovoort.
Hier volgen belangrijke overwegingen om te evalueren:
- Voor de overgang naar statische volumes van oorspronkelijke dynamische volumes moeten PV-objecten handmatig worden gemaakt en beheerd voor alle opties.
- Mogelijke downtime van toepassingen bij het opnieuw implementeren van de nieuwe toepassing met verwijzing naar het nieuwe PVC-object.
Migratie
Werk de bestaande HW
ReclaimPolicy
bij van Delete naar Behouden door de volgende opdracht uit te voeren:kubectl patch pv pvName -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
Vervang pvName door de naam van uw geselecteerde PersistentVolume. Als u de reclaimPolicy voor meerdere tv's wilt bijwerken, maakt u ook een bestand met de naam patchReclaimPVs.sh en kopieert u deze in de volgende code.
#!/bin/bash # Patch the Persistent Volume in case ReclaimPolicy is Delete NAMESPACE=$1 i=1 for PVC in $(kubectl get pvc -n $NAMESPACE | awk '{ print $1}'); do # Ignore first record as it contains header if [ $i -eq 1 ]; then i=$((i + 1)) else PV="$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.spec.volumeName}')" RECLAIMPOLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" echo "Reclaim Policy for Persistent Volume $PV is $RECLAIMPOLICY" if [[ $RECLAIMPOLICY == "Delete" ]]; then echo "Updating ReclaimPolicy for $pv to Retain" kubectl patch pv $PV -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' fi fi done
Voer het script uit met de
namespace
parameter om de clusternaamruimte./PatchReclaimPolicy.sh <namespace>
op te geven.Haal een lijst op met alle HPC's in naamruimte gesorteerd op creationTimestamp door de volgende opdracht uit te voeren. Stel de naamruimte in met behulp van het
--namespace
argument, samen met de werkelijke clusternaamruimte.kubectl get pvc -n <namespace> --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,CreationTime:.metadata.creationTimestamp,StorageClass:.spec.storageClassName,Size:.spec.resources.requests.storage
Deze stap is handig als u een groot aantal tv's hebt die moeten worden gemigreerd en u er een paar tegelijk wilt migreren. Door deze opdracht uit te voeren, kunt u bepalen welke PVC's in een bepaald tijdsbestek zijn gemaakt. Wanneer u het CreatePV.sh-script uitvoert, zijn twee van de parameters de begin- en eindtijd waarmee u de HPC's gedurende die periode alleen kunt migreren.
Maak een bestand met de naam CreatePV.sh en kopieer deze in de volgende code. Het script doet het volgende:
- Hiermee maakt u een nieuw PersistentVolume met de naam
existing-pv-csi
voor alle PersistentVolumes in naamruimten voor opslagklassestorageClassName
. - Configureer de nieuwe PVC-naam als
existing-pvc-csi
. - Hiermee maakt u een nieuw PVC met de HW-naam die u opgeeft.
#!/bin/bash #kubectl get pvc -n <namespace> --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,CreationTime:.metadata.creationTimestamp,StorageClass:.spec.storageClassName,Size:.spec.resources.requests.storage # TimeFormat 2022-04-20T13:19:56Z NAMESPACE=$1 FILENAME=$(date +%Y%m%d%H%M)-$NAMESPACE EXISTING_STORAGE_CLASS=$2 STORAGE_CLASS_NEW=$3 STARTTIMESTAMP=$4 ENDTIMESTAMP=$5 i=1 for PVC in $(kubectl get pvc -n $NAMESPACE | awk '{ print $1}'); do # Ignore first record as it contains header if [ $i -eq 1 ]; then i=$((i + 1)) else PVC_CREATION_TIME=$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.metadata.creationTimestamp}') if [[ $PVC_CREATION_TIME >= $STARTTIMESTAMP ]]; then if [[ $ENDTIMESTAMP > $PVC_CREATION_TIME ]]; then PV="$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.spec.volumeName}')" RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" STORAGECLASS="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.storageClassName}')" echo $PVC RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" if [[ $RECLAIM_POLICY == "Retain" ]]; then if [[ $STORAGECLASS == $EXISTING_STORAGE_CLASS ]]; then STORAGE_SIZE="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.capacity.storage}')" SKU_NAME="$(kubectl get storageClass $STORAGE_CLASS_NEW -o jsonpath='{.parameters.skuname}')" DISK_URI="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.azureDisk.diskURI}')" PERSISTENT_VOLUME_RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" cat >$PVC-csi.yaml <<EOF apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: disk.csi.azure.com name: $PV-csi spec: accessModes: - ReadWriteOnce capacity: storage: $STORAGE_SIZE claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: $PVC-csi namespace: $NAMESPACE csi: driver: disk.csi.azure.com volumeAttributes: csi.storage.k8s.io/pv/name: $PV-csi csi.storage.k8s.io/pvc/name: $PVC-csi csi.storage.k8s.io/pvc/namespace: $NAMESPACE requestedsizegib: "$STORAGE_SIZE" skuname: $SKU_NAME volumeHandle: $DISK_URI persistentVolumeReclaimPolicy: $PERSISTENT_VOLUME_RECLAIM_POLICY storageClassName: $STORAGE_CLASS_NEW --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: $PVC-csi namespace: $NAMESPACE spec: accessModes: - ReadWriteOnce storageClassName: $STORAGE_CLASS_NEW resources: requests: storage: $STORAGE_SIZE volumeName: $PV-csi EOF kubectl apply -f $PVC-csi.yaml LINE="PVC:$PVC,PV:$PV,StorageClassTarget:$STORAGE_CLASS_NEW" printf '%s\n' "$LINE" >>$FILENAME fi fi fi fi fi done
- Hiermee maakt u een nieuw PersistentVolume met de naam
Als u een nieuw PersistentVolume wilt maken voor alle PersistentVolumes in de naamruimte, voert u het script uit CreatePV.sh met de volgende parameters:
namespace
- De clusternaamruimtesourceStorageClass
- De op stuurprogramma's gebaseerde StorageClass van de in-tree storagetargetCSIStorageClass
- De op stuurprogramma's van het CSI-opslagstuurprogramma gebaseerde StorageClass, die een van de standaardopslagklassen kan zijn waarop de inrichting is ingesteld op disk.csi.azure.com of file.csi.azure.com. U kunt ook een aangepaste opslagklasse maken zolang deze is ingesteld op een van deze twee inrichtingsfuncties.startTimeStamp
- Geef een begintijd op voordat PVC aanmaaktijd in de notatie jjjj-mm-ddthh:mm:sszendTimeStamp
- Geef een eindtijd op in de notatie jjjj-mm-ddthh:mm:ssz.
./CreatePV.sh <namespace> <sourceIntreeStorageClass> <targetCSIStorageClass> <startTimestamp> <endTimestamp>
Werk uw toepassing bij om het nieuwe PVC te gebruiken.
Een dynamisch volume maken
Met deze optie maakt u dynamisch een permanent volume op basis van een permanente volumeclaim.
De voordelen van deze aanpak zijn:
Het is minder riskant omdat alle nieuwe objecten worden gemaakt met behoud van andere kopieën met momentopnamen.
Het is niet nodig om PV's afzonderlijk samen te stellen en een volumenaam toe te voegen in het PVC-manifest.
Hier volgen belangrijke overwegingen om te evalueren:
Hoewel deze benadering minder riskant is, worden er meerdere objecten gemaakt die uw opslagkosten verhogen.
Tijdens het maken van de nieuwe volumes is uw toepassing niet beschikbaar.
Verwijderingsstappen moeten voorzichtig worden uitgevoerd. Tijdelijke resourcevergrendelingen kunnen worden toegepast op uw resourcegroep totdat de migratie is voltooid en uw toepassing is geverifieerd.
Voer gegevensvalidatie/verificatie uit wanneer er nieuwe schijven worden gemaakt op basis van momentopnamen.
Migratie
Controleer het volgende voordat u doorgaat:
Voor specifieke werkbelastingen waarin gegevens naar het geheugen worden geschreven voordat ze naar de schijf worden geschreven, moet de toepassing worden gestopt en moeten gegevens in het geheugen worden leeggemaakt naar de schijf.
VolumeSnapshot
klasse moet bestaan zoals wordt weergegeven in het volgende voorbeeld YAML:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: custom-disk-snapshot-sc driver: disk.csi.azure.com deletionPolicy: Delete parameters: incremental: "false"
Haal een lijst op van alle HPC's in een opgegeven naamruimte, gesorteerd op creationTimestamp door de volgende opdracht uit te voeren. Stel de naamruimte in met behulp van het
--namespace
argument, samen met de werkelijke clusternaamruimte.kubectl get pvc --namespace <namespace> --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,CreationTime:.metadata.creationTimestamp,StorageClass:.spec.storageClassName,Size:.spec.resources.requests.storage
Deze stap is handig als u een groot aantal tv's hebt die moeten worden gemigreerd en u er een paar tegelijk wilt migreren. Door deze opdracht uit te voeren, kunt u bepalen welke PVC's in een bepaald tijdsbestek zijn gemaakt. Wanneer u het MigrateCSI.sh-script uitvoert, zijn twee van de parameters de begin- en eindtijd waarmee u de HPC's gedurende die periode alleen kunt migreren.
Maak een bestand met de naam MigrateToCSI.sh en kopieer deze in de volgende code. Het script doet het volgende:
- Hiermee maakt u een momentopname van een volledige schijf met behulp van de Azure CLI
- Maakt
VolumesnapshotContent
- Maakt
VolumeSnapshot
- Hiermee maakt u een nieuw PVC van
VolumeSnapshot
- Hiermee maakt u een nieuw bestand met de bestandsnaam
<namespace>-timestamp
, dat een lijst bevat met alle oude resources die moeten worden opgeschoond.
#!/bin/bash #kubectl get pvc -n <namespace> --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,CreationTime:.metadata.creationTimestamp,StorageClass:.spec.storageClassName,Size:.spec.resources.requests.storage # TimeFormat 2022-04-20T13:19:56Z NAMESPACE=$1 FILENAME=$NAMESPACE-$(date +%Y%m%d%H%M) EXISTING_STORAGE_CLASS=$2 STORAGE_CLASS_NEW=$3 VOLUME_STORAGE_CLASS=$4 START_TIME_STAMP=$5 END_TIME_STAMP=$6 i=1 for PVC in $(kubectl get pvc -n $NAMESPACE | awk '{ print $1}'); do # Ignore first record as it contains header if [ $i -eq 1 ]; then i=$((i + 1)) else PVC_CREATION_TIME=$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.metadata.creationTimestamp}') if [[ $PVC_CREATION_TIME > $START_TIME_STAMP ]]; then if [[ $END_TIME_STAMP > $PVC_CREATION_TIME ]]; then PV="$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.spec.volumeName}')" RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" STORAGE_CLASS="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.storageClassName}')" echo $PVC RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" if [[ $STORAGE_CLASS == $EXISTING_STORAGE_CLASS ]]; then STORAGE_SIZE="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.capacity.storage}')" SKU_NAME="$(kubectl get storageClass $STORAGE_CLASS_NEW -o jsonpath='{.parameters.skuname}')" DISK_URI="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.azureDisk.diskURI}')" TARGET_RESOURCE_GROUP="$(cut -d'/' -f5 <<<"$DISK_URI")" echo $DISK_URI SUBSCRIPTION_ID="$(echo $DISK_URI | grep -o 'subscriptions/[^/]*' | sed 's#subscriptions/##g')" echo $TARGET_RESOURCE_GROUP PERSISTENT_VOLUME_RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" az snapshot create --resource-group $TARGET_RESOURCE_GROUP --name $PVC-$FILENAME --source "$DISK_URI" --subscription ${SUBSCRIPTION_ID} SNAPSHOT_PATH=$(az snapshot list --resource-group $TARGET_RESOURCE_GROUP --query "[?name == '$PVC-$FILENAME'].id | [0]" --subscription ${SUBSCRIPTION_ID}) SNAPSHOT_HANDLE=$(echo "$SNAPSHOT_PATH" | tr -d '"') echo $SNAPSHOT_HANDLE sleep 10 # Create Restore File cat <<EOF >$PVC-csi.yml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: $PVC-$FILENAME spec: deletionPolicy: 'Delete' driver: 'disk.csi.azure.com' volumeSnapshotClassName: $VOLUME_STORAGE_CLASS source: snapshotHandle: $SNAPSHOT_HANDLE volumeSnapshotRef: apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot name: $PVC-$FILENAME namespace: $1 --- apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: $PVC-$FILENAME namespace: $1 spec: volumeSnapshotClassName: $VOLUME_STORAGE_CLASS source: volumeSnapshotContentName: $PVC-$FILENAME --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-$PVC namespace: $1 spec: accessModes: - ReadWriteOnce storageClassName: $STORAGE_CLASS_NEW resources: requests: storage: $STORAGE_SIZE dataSource: name: $PVC-$FILENAME kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io EOF kubectl create -f $PVC-csi.yml LINE="OLDPVC:$PVC,OLDPV:$PV,VolumeSnapshotContent:volumeSnapshotContent-$FILENAME,VolumeSnapshot:volumesnapshot$FILENAME,OLDdisk:$DISK_URI" printf '%s\n' "$LINE" >>$FILENAME fi fi fi fi done
Als u de schijfvolumes wilt migreren, voert u het script uit MigrateToCSI.sh met de volgende parameters:
namespace
- De clusternaamruimtesourceStorageClass
- De op stuurprogramma's gebaseerde StorageClass van de in-tree storagetargetCSIStorageClass
- De op stuurprogramma's gebaseerde StorageClass van CSIvolumeSnapshotClass
- Naam van de klasse voor momentopnamen van het volume. Bijvoorbeeld:custom-disk-snapshot-sc
.startTimeStamp
- Geef een begintijd op in de notatie jjjj-mm-ddthh:mm:ssz.endTimeStamp
- Geef een eindtijd op in de notatie jjjj-mm-ddthh:mm:ssz.
./MigrateToCSI.sh <namespace> <sourceStorageClass> <TargetCSIstorageClass> <VolumeSnapshotClass> <startTimestamp> <endTimestamp>
Werk uw toepassing bij om het nieuwe PVC te gebruiken.
Verwijder handmatig de oudere resources, waaronder in-tree PVC/PV, VolumeSnapshot en VolumeSnapshotContent. Anders genereert het onderhoud van de in-tree PVC/PC en momentopnameobjecten meer kosten.
Bestandssharevolumes migreren
Migratie van in-tree naar CSI wordt ondersteund door een statisch volume te maken:
- U hoeft de oorspronkelijke configuratie niet op te schonen met behulp van de in-tree-opslagklasse.
- Laag risico omdat u alleen een logische verwijdering van Kubernetes PV/PVC uitvoert, worden de werkelijke fysieke gegevens niet verwijderd.
- Er worden geen extra kosten gemaakt als gevolg van het niet hoeven maken van extra Azure-objecten, zoals bestandsshares, enzovoort.
Migratie
Werk de bestaande HW
ReclaimPolicy
bij van Delete naar Behouden door de volgende opdracht uit te voeren:kubectl patch pv pvName -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
Vervang pvName door de naam van uw geselecteerde PersistentVolume. Als u de reclaimPolicy voor meerdere tv's wilt bijwerken, maakt u ook een bestand met de naam patchReclaimPVs.sh en kopieert u deze in de volgende code.
#!/bin/bash # Patch the Persistent Volume in case ReclaimPolicy is Delete namespace=$1 i=1 for pvc in $(kubectl get pvc -n $namespace | awk '{ print $1}'); do # Ignore first record as it contains header if [ $i -eq 1 ]; then i=$((i + 1)) else pv="$(kubectl get pvc $pvc -n $namespace -o jsonpath='{.spec.volumeName}')" reclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')" echo "Reclaim Policy for Persistent Volume $pv is $reclaimPolicy" if [[ $reclaimPolicy == "Delete" ]]; then echo "Updating ReclaimPolicy for $pv to Retain" kubectl patch pv $pv -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' fi fi done
Voer het script uit met de
namespace
parameter om de clusternaamruimte./PatchReclaimPolicy.sh <namespace>
op te geven.Maak een nieuwe opslagklasse waarop de inrichting is ingesteld
file.csi.azure.com
of u kunt een van de standaardOpslagklassen gebruiken met de CSI-bestandsinrichting.Haal de
secretName
enshareName
van de bestaande PersistentVolumes op door de volgende opdracht uit te voeren:kubectl describe pv pvName
Maak een nieuwe HW met behulp van de nieuwe StorageClass en de
shareName
ensecretName
van de HW in de structuur. Maak een bestand met de naam azurefile-mount-pv.yaml en kopieer deze in de volgende code. Ondercsi
, bijwerkenresourceGroup
, enshareName
volumeHandle
. Voor koppelopties is de standaardwaarde voor fileMode en dirMode 0777.De standaardwaarde voor
fileMode
endirMode
is 0777.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: file.csi.azure.com name: azurefile spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: azurefile-csi csi: driver: file.csi.azure.com readOnly: false volumeHandle: unique-volumeid # make sure volumeid is unique for every identical share in the cluster volumeAttributes: resourceGroup: EXISTING_RESOURCE_GROUP_NAME # optional, only set this when storage account is not in the same resource group as the cluster nodes shareName: aksshare nodeStageSecretRef: name: azure-secret namespace: default mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - nosharesock - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Maak een bestand met de naam azurefile-mount-pvc.yaml-bestand met een PersistentVolumeClaim die het PersistentVolume gebruikt met behulp van de volgende code.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
Gebruik de
kubectl
opdracht om het PersistentVolume te maken.kubectl apply -f azurefile-mount-pv.yaml
Gebruik de
kubectl
opdracht om de PersistentVolumeClaim te maken.kubectl apply -f azurefile-mount-pvc.yaml
Controleer of uw PersistentVolumeClaim is gemaakt en gebonden aan het PersistentVolume door de volgende opdracht uit te voeren.
kubectl get pvc azurefile
De uitvoer ziet er ongeveer als volgt uit:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Werk de containerspecificatie bij om te verwijzen naar uw PersistentVolumeClaim en werk uw pod bij. Kopieer bijvoorbeeld de volgende code en maak een bestand met de naam azure-files-pod.yaml.
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
De podspecificatie kan niet worden bijgewerkt. Gebruik de volgende
kubectl
opdrachten om de pod te verwijderen en vervolgens opnieuw te maken.kubectl delete pod mypod
kubectl apply -f azure-files-pod.yaml
Volgende stappen
- Zie Best practices voor opslag en back-ups in Azure Kubernetes Service voor meer informatie over aanbevolen procedures voor opslag.
- Beveilig uw zojuist gemigreerde CSI-stuurprogramma's door er een back-up van te maken met behulp van Azure Backup voor AKS.
Azure Kubernetes Service