Migrasi dari kelas penyimpanan di pohon ke driver CSI di Azure Kubernetes Service (AKS)
Implementasi driver Container Storage Interface (CSI) diperkenalkan di Azure Kubernetes Service (AKS) yang dimulai dengan versi 1.21. Dengan mengadopsi dan menggunakan CSI sebagai standar, beban kerja stateful Anda yang ada menggunakan Volume Persisten (PV) in-tree harus dimigrasikan atau ditingkatkan untuk menggunakan driver CSI.
Untuk mempermudah proses ini, dan untuk memastikan tidak ada kehilangan data, artikel ini menyediakan opsi migrasi yang berbeda. Opsi ini termasuk skrip untuk membantu memastikan kelancaran migrasi dari driver CSI in-tree ke Azure Disks dan Azure Files.
Sebelum Anda mulai
- Azure CLI versi 2.37.0 atau lebih baru. Jalankan
az --version
untuk menemukan versi, dan jalankanaz upgrade
untuk meningkatkan versi. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Administrator Kubectl dan kluster memiliki akses untuk membuat, mendapatkan, mencantumkan, menghapus akses ke PVC atau PV, rekam jepret volume, atau konten rekam jepret volume. Untuk kluster yang diaktifkan Microsoft Entra RBAC, Anda adalah anggota peran Admin Kluster RBAC Azure Kubernetes Service.
Memigrasikan volume Disk
Catatan
Label failure-domain.beta.kubernetes.io/zone
dan failure-domain.beta.kubernetes.io/region
telah ditolak di AKS 1.24 dan dihapus dalam 1.28. Jika volume persisten yang ada masih menggunakan nodeAffinity yang cocok dengan kedua label ini, Anda perlu mengubahnya menjadi topology.kubernetes.io/zone
dan topology.kubernetes.io/region
memberi label dalam pengaturan volume persisten baru.
Migrasi dari in-tree ke CSI didukung menggunakan dua opsi migrasi:
- Membuat volume statis
- Membuat volume dinamis
Membuat volume statis
Dengan menggunakan opsi ini, Anda membuat PV dengan menetapkan claimRef
secara statis ke PVC baru yang akan Anda buat nanti, dan menentukan volumeName
untuk PersistentVolumeClaim.
Keuntungan-keuntungan dari pendekatan ini adalah:
- Ini sederhana dan dapat diotomatisasi.
- Tidak perlu membersihkan konfigurasi asli menggunakan kelas penyimpanan dalam pohon.
- Risiko rendah karena Anda hanya melakukan penghapusan logis Kubernetes PV/PVC, data fisik aktual tidak dihapus.
- Tidak ada biaya tambahan yang dikeluarkan sebagai akibat dari tidak harus membuat objek Azure tambahan, seperti disk, rekam jepret, dll.
Berikut ini adalah pertimbangan penting untuk dievaluasi:
- Transisi ke volume statis dari volume gaya dinamis asli memerlukan pembuatan dan pengelolaan objek PV secara manual untuk semua opsi.
- Potensi waktu henti aplikasi saat menyebarkan ulang aplikasi baru dengan referensi ke objek PVC baru.
Migration
Perbarui PV
ReclaimPolicy
yang ada dari Hapus ke Pertahankan dengan menjalankan perintah berikut:kubectl patch pv pvName -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
Ganti pvName dengan nama PersistentVolume yang Anda pilih. Atau, jika Anda ingin memperbarui reclaimPolicy untuk beberapa PV, buat file bernama patchReclaimPVs.sh dan salin dalam kode berikut.
#!/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
Jalankan skrip dengan
namespace
parameter untuk menentukan namespace./PatchReclaimPolicy.sh <namespace>
kluster .Dapatkan daftar semua PVC di namespace yang diurutkan menurut creationTimestamp dengan menjalankan perintah berikut. Atur namespace menggunakan
--namespace
argumen bersama dengan namespace kluster yang sebenarnya.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
Langkah ini berguna jika Anda memiliki sejumlah besar PV yang perlu dimigrasikan, dan Anda ingin bermigrasi beberapa per satu. Menjalankan perintah ini memungkinkan Anda mengidentifikasi PVC mana yang dibuat dalam jangka waktu tertentu. Saat Anda menjalankan skrip CreatePV.sh , dua parameter adalah waktu mulai dan waktu akhir yang memungkinkan Anda hanya memigrasikan PVC selama periode waktu tersebut.
Buat file bernama CreatePV.sh dan salin dalam kode berikut. Skrip melakukan hal berikut:
- Membuat PersistentVolume baru dengan nama
existing-pv-csi
untuk semua PersistentVolumes di namespace layanan untuk kelasstorageClassName
penyimpanan . - Konfigurasikan nama PVC baru sebagai
existing-pvc-csi
. - Membuat PVC baru dengan nama PV yang Anda tentukan.
#!/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
- Membuat PersistentVolume baru dengan nama
Untuk membuat PersistentVolume baru untuk semua PersistentVolumes di namespace, jalankan skrip CreatePV.sh dengan parameter berikut:
namespace
- Namespace klustersourceStorageClass
- StorageClass berbasis driver penyimpanan di pohontargetCSIStorageClass
- StorageClass berbasis driver penyimpanan CSI, yang dapat menjadi salah satu kelas penyimpanan default yang memiliki provisioner yang diatur ke disk.csi.azure.com atau file.csi.azure.com. Atau Anda dapat membuat kelas penyimpanan kustom selama diatur ke salah satu dari dua provisi tersebut.startTimeStamp
- Berikan waktu mulai sebelum waktu pembuatan PVC dalam format yyyy-mm-ddthh:mm:sszendTimeStamp
- Berikan waktu akhir dalam format yyyy-mm-ddthh:mm:ssz.
./CreatePV.sh <namespace> <sourceIntreeStorageClass> <targetCSIStorageClass> <startTimestamp> <endTimestamp>
Perbarui aplikasi Anda untuk menggunakan PVC baru.
Membuat volume dinamis
Dengan menggunakan opsi ini, Anda secara dinamis membuat Volume Persisten dari Klaim Volume Persisten.
Keuntungan-keuntungan dari pendekatan ini adalah:
Langkah ini memiliki risiko yang lebih sedikit karena semua objek baru dibuat sambil mempertahankan salinan lain dengan snapshot.
Tidak perlu membuat PV secara terpisah dan menambahkan nama volume dalam manifes PVC.
Berikut ini adalah pertimbangan penting untuk dievaluasi:
Meskipun memiliki risiko yang lebih sedikit, pendekatan ini membuat beberapa objek yang akan meningkatkan biaya penyimpanan Anda.
Selama pembuatan volume baru, aplikasi Anda menjadi tidak tersedia.
Langkah-langkah penghapusan harus dilakukan dengan hati-hati. Kunci sumber daya sementara dapat diterapkan ke grup sumber daya Anda hingga migrasi selesai dan aplikasi Anda berhasil diverifikasi.
Lakukan validasi/verifikasi data saat disk baru dibuat dari snapshot.
Migration
Sebelum melanjutkan, verifikasi hal berikut:
Untuk beban kerja tertentu di mana data ditulis ke memori sebelum ditulis ke disk, aplikasi harus dihentikan dan untuk memungkinkan data dalam memori dihapus ke disk.
VolumeSnapshot
kelas harus ada seperti yang ditunjukkan dalam contoh YAML berikut:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: custom-disk-snapshot-sc driver: disk.csi.azure.com deletionPolicy: Delete parameters: incremental: "false"
Dapatkan daftar semua PVC di namespace tertentu yang diurutkan menurut creationTimestamp dengan menjalankan perintah berikut. Atur namespace menggunakan
--namespace
argumen bersama dengan namespace kluster yang sebenarnya.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
Langkah ini berguna jika Anda memiliki sejumlah besar PV yang perlu dimigrasikan, dan Anda ingin bermigrasi beberapa per satu. Menjalankan perintah ini memungkinkan Anda mengidentifikasi PVC mana yang dibuat dalam jangka waktu tertentu. Saat Anda menjalankan skrip MigrateCSI.sh , dua parameter adalah waktu mulai dan waktu akhir yang memungkinkan Anda hanya memigrasikan PVC selama periode waktu tersebut.
Buat file bernama MigrateToCSI.sh dan salin dalam kode berikut. Skrip melakukan hal berikut:
- Membuat rekam jepret disk lengkap menggunakan Azure CLI
- Menciptakan
VolumesnapshotContent
- Menciptakan
VolumeSnapshot
- Membuat PVC baru dari
VolumeSnapshot
- Membuat file baru dengan nama
<namespace>-timestamp
file , yang berisi daftar semua sumber daya lama yang perlu dibersihkan.
#!/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
Untuk memigrasikan volume disk, jalankan skrip MigrateToCSI.sh dengan parameter berikut:
namespace
- Namespace klustersourceStorageClass
- StorageClass berbasis driver penyimpanan di pohontargetCSIStorageClass
- StorageClass berbasis driver penyimpanan CSIvolumeSnapshotClass
- Nama kelas rekam jepret volume. Contohnya,custom-disk-snapshot-sc
.startTimeStamp
- Berikan waktu mulai dalam format yyyy-mm-ddthh:mm:ssz.endTimeStamp
- Berikan waktu akhir dalam format yyyy-mm-ddthh:mm:ssz.
./MigrateToCSI.sh <namespace> <sourceStorageClass> <TargetCSIstorageClass> <VolumeSnapshotClass> <startTimestamp> <endTimestamp>
Perbarui aplikasi Anda untuk menggunakan PVC baru.
Hapus sumber daya lama secara manual termasuk PVC/PV in-tree, VolumeSnapshot, dan VolumeSnapshotContent. Jika tidak, mempertahankan PVC/PC in-tree dan objek snapshot akan menghasilkan lebih banyak biaya.
Memigrasikan volume berbagi file
Migrasi dari in-tree ke CSI didukung dengan membuat volume statis:
- Tidak perlu membersihkan konfigurasi asli menggunakan kelas penyimpanan dalam pohon.
- Risiko rendah karena Anda hanya melakukan penghapusan logis Kubernetes PV/PVC, data fisik aktual tidak dihapus.
- Tidak ada biaya tambahan yang dikeluarkan sebagai akibat dari tidak harus membuat objek Azure tambahan, seperti berbagi file, dll.
Migration
Perbarui PV
ReclaimPolicy
yang ada dari Hapus ke Pertahankan dengan menjalankan perintah berikut:kubectl patch pv pvName -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
Ganti pvName dengan nama PersistentVolume yang Anda pilih. Atau, jika Anda ingin memperbarui reclaimPolicy untuk beberapa PV, buat file bernama patchReclaimPVs.sh dan salin dalam kode berikut.
#!/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
Jalankan skrip dengan
namespace
parameter untuk menentukan namespace./PatchReclaimPolicy.sh <namespace>
kluster .Buat Kelas Penyimpanan baru dengan provisioner yang diatur ke
file.csi.azure.com
, atau Anda dapat menggunakan salah satu StorageClasses default dengan penyedia file CSI.secretName
Dapatkan danshareName
dari PersistentVolumes yang ada dengan menjalankan perintah berikut:kubectl describe pv pvName
Buat PV baru menggunakan StorageClass baru, dan
shareName
dansecretName
dari PV in-tree. Buat file bernama azurefile-mount-pv.yaml dan salin dalam kode berikut. Di bawahcsi
, perbaruiresourceGroup
,volumeHandle
, danshareName
. Untuk opsi pemasangan, nilai default untuk fileMode dan dirMode adalah 0777.Nilai default untuk
fileMode
dandirMode
adalah 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
Buat file bernama azurefile-mount-pvc.yaml dengan PersistentVolumeClaim yang menggunakan PersistentVolume menggunakan kode berikut.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
kubectl
Gunakan perintah untuk membuat PersistentVolume.kubectl apply -f azurefile-mount-pv.yaml
kubectl
Gunakan perintah untuk membuat PersistentVolumeClaim.kubectl apply -f azurefile-mount-pvc.yaml
Verifikasi PersistentVolumeClaim Anda dibuat dan terikat ke PersistentVolume dengan menjalankan perintah berikut.
kubectl get pvc azurefile
Output menyerupai hal berikut:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Perbarui spesifikasi kontainer untuk mereferensikan PersistentVolumeClaim dan perbarui pod Anda. Misalnya, salin kode berikut dan buat file bernama azure-files-pod.yaml.
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
Spesifikasi pod tidak dapat diperbarui di tempat. Gunakan perintah berikut
kubectl
untuk menghapus lalu membuat ulang pod.kubectl delete pod mypod
kubectl apply -f azure-files-pod.yaml
Langkah berikutnya
- Untuk informasi selengkapnya tentang praktik terbaik penyimpanan, lihat Praktik terbaik untuk penyimpanan dan pencadangan di Azure Kubernetes Service.
- Lindungi PV berbasis Driver CSI yang baru dimigrasikan dengan mencadangkannya menggunakan Azure Backup untuk AKS.
Azure Kubernetes Service