Anda dapat menggunakan Pusat Cadangan untuk memigrasikan aplikasi dari kluster yang menggunakan plug-in FlexVolume ke kluster yang menggunakan plug-in Container Storage Interface (CSI), atau dari kluster Kubernetes versi lama ke kluster baru. Pusat Cadangan mengatasi masalah yang muncul selama migrasi antar kluster dengan plug-in penyimpanan atau versi Kubernetes berbeda, seperti mencadangkan resource tingkat kluster yang tidak digunakan oleh aplikasi dan secara otomatis menggunakan versi API yang kompatibel dengan kluster pemulihan. Topik ini menjelaskan cara menggunakan Pusat Cadangan untuk memigrasikan aplikasi, dengan contoh migrasi dari kluster yang menggunakan FlexVolume dan menjalankan Kubernetes 1.16 ke kluster yang menggunakan CSI dan menjalankan Kubernetes 1.28.
Catatan
Kluster pencadangan dan kluster pemulihan harus berada di wilayah yang sama. Kluster pencadangan harus menjalankan Kubernetes 1.16 atau lebih baru. Untuk menghindari masalah kompatibilitas versi API, disarankan agar Anda tidak menggunakan Pusat Cadangan untuk memigrasikan aplikasi dari versi Kubernetes yang lebih baru ke versi yang lebih lama.
Pusat Cadangan tidak mencadangkan resource yang sedang dalam proses penghapusan.
-
Untuk memulihkan data ke volume Network Attached Storage (NAS) yang dikelola oleh Container Network File System (CNFS), Anda harus membuat StorageClass jika berencana mengatur parameter StorageClass menjadi alibabacloud-cnfs-nas selama pemulihan. Untuk informasi selengkapnya, lihat Kelola sistem file NAS menggunakan CNFS.
Saat aplikasi dipulihkan, resource dipulihkan terlebih dahulu menggunakan apiVersion yang direkomendasikan untuk versi Kubernetes kluster pemulihan. Jika suatu resource tidak memiliki apiVersion yang didukung oleh kedua versi kluster, Anda harus men-deploy resource tersebut secara manual. Contohnya:
Deployment di kluster Kubernetes 1.16 mendukung versi API
extensions/v1beta1,apps/v1beta1,apps/v1beta2, danapps/v1. Saat dipulihkan ke kluster Kubernetes 1.28, resource tersebut dipulihkan menggunakanapps/v1.Ingress di kluster Kubernetes 1.16 mendukung versi API
extensions/v1beta1dannetworking.k8s.io/v1beta1. Resource tersebut tidak dapat langsung dipulihkan ke kluster yang menjalankan Kubernetes 1.22 atau lebih baru.
Untuk informasi selengkapnya tentang perubahan API lintas versi Kubernetes, lihat Catatan rilis ACK dan Panduan Migrasi API yang Ditinggalkan.
PentingDi kluster Kubernetes 1.16, grup API seperti
appsdanrbac.authorization.k8s.iosudah mendukung v1. Saat Anda memigrasikan aplikasi ke kluster Kubernetes 1.28, Anda harus memulihkan secara manual resource seperti Ingress dan CronJob.
Kasus penggunaan
Migrasi aplikasi lintas plug-in penyimpanan
Kluster ACK yang menjalankan Kubernetes 1.20 atau lebih baru tidak lagi mendukung plug-in penyimpanan FlexVolume. Anda dapat menggunakan Pusat Cadangan untuk memigrasikan aplikasi berstatus dari kluster FlexVolume ke kluster CSI.
CatatanAnda dapat memigrasikan aplikasi dari kluster yang menggunakan plug-in penyimpanan FlexVolume atau CSI, tetapi kluster pemulihan harus menggunakan plug-in penyimpanan CSI.
Berpindah antar kluster dengan selisih versi Kubernetes yang besar
Dalam beberapa skenario, Anda mungkin perlu memigrasikan layanan dari kluster Kubernetes lama (1.16 atau lebih baru) ke kluster baru. Misalnya, Anda mungkin mengganti plug-in jaringan dari Flannel ke Terway. Pusat Cadangan mendukung migrasi aplikasi lintas versi dengan selisih besar dan secara otomatis menyesuaikan konfigurasi dasar, seperti
apiVersiondalam templat aplikasi, agar sesuai dengan versi Kubernetes yang baru.
Prasyarat
Aktifkan Cloud Backup. Saat mencadangkan volume persisten NAS, OSS, atau disk lokal, serta dalam skenario cloud hibrida, Pusat Cadangan perlu menggunakan Cloud Backup untuk Pencadangan File.
Kluster tempat volume dipulihkan telah dibuat. Untuk memastikan Anda dapat menggunakan snapshot instans Elastic Compute Service (ECS) untuk memulihkan data disk, disarankan agar Anda memperbarui versi Kubernetes kluster ke 1.18 atau lebih baru. Untuk informasi selengkapnya, lihat Buat kluster ACK yang dikelola, Buat kluster khusus ACK (tidak tersedia lagi), atau Buat kluster terdaftar ACK One.
PentingKluster pemulihan harus menggunakan plug-in Container Storage Interface (CSI). Pemulihan aplikasi tidak didukung di kluster yang menggunakan FlexVolume atau menggunakan csi-compatible-controller dan FlexVolume.
Pusat Cadangan digunakan untuk mencadangkan dan memulihkan aplikasi. Sebelum menjalankan tugas pemulihan, Anda harus menginstal dan mengonfigurasi komponen sistem di kluster pemulihan. Contohnya:
aliyun-acr-credential-helper: Anda perlu memberikan izin ke kluster pemulihan dan mengonfigurasi acr-configuration.
alb-ingress-controller: Anda perlu mengonfigurasi ALBConfig.
-
Komponen layanan pencadangan migrate-controller telah diinstal dan izinnya telah dikonfigurasi. Untuk informasi selengkapnya, lihat Instal komponen layanan pencadangan migrate-controller dan konfigurasikan izin.
-
Untuk mencadangkan volume menggunakan snapshot disk cloud, Anda harus menginstal plug-in CSI versi v1.1.0 atau lebih baru. Untuk informasi selengkapnya, lihat Instal dan tingkatkan komponen CSI.
Alur kerja migrasi
Alur kerja migrasi bervariasi berdasarkan plug-in penyimpanan yang digunakan oleh kluster pencadangan. Gambar berikut menunjukkan detailnya.
Kluster pencadangan tanpa aplikasi penyimpanan
Kluster pencadangan menggunakan FlexVolume
Kluster pencadangan menggunakan CSI
Prosedur
Bagian ini menggunakan contoh migrasi aplikasi, konfigurasi, dan data volume dari kluster ACK yang menggunakan FlexVolume dan menjalankan Kubernetes 1.16 ke kluster ACK yang menggunakan CSI dan menjalankan Kubernetes 1.28. Migrasi menggunakan metode perubahan sumber data atau sumber data tidak berubah. Jika Anda ingin memigrasikan aplikasi yang tidak menggunakan penyimpanan atau jika kluster pencadangan Anda menggunakan plug-in penyimpanan CSI, Anda dapat melewati langkah-langkah yang ditandai sebagai Opsional.
Jika Anda menggunakan metode sumber data tidak berubah, Anda harus mengubah kebijakan reclaim PersistentVolume (PV) di kluster pencadangan menjadi Retain. Hal ini mencegah data terhapus saat volumenya dihapus.
kubectl patch pv/<pv-name> --type='json' -p '[{"op":"replace","path":"/spec/persistentVolumeReclaimPolicy","value":"Retain"}]'Metode | Deskripsi | Kasus penggunaan |
Perubahan sumber data | Metode ini mencadangkan data dari volume di kluster pencadangan dan membuat salinan data baru untuk aplikasi di kluster pemulihan. Metode ini membuat dua set penyimpanan yang sepenuhnya independen. Proses pemulihan data menggunakan pemasangan dinamis, yang memungkinkan Anda mengubah jenis penyimpanan dengan mengonversi StorageClass. Misalnya, Anda dapat mengonversi penyimpanan NAS menjadi penyimpanan disk. |
|
Sumber data tidak berubah | Metode ini menggunakan pemasangan statis selama proses pemulihan untuk menggunakan kembali sumber data asli, seperti ID disk atau bucket OSS, berdasarkan PersistentVolumeClaim (PVC) dan PersistentVolume (PV) yang dicadangkan. Jika Anda memigrasikan aplikasi dari kluster FlexVolume ke kluster CSI, Anda harus membuat PVC dan PV statis secara manual karena templat YAML-nya tidak kompatibel. | Aplikasi tidak dapat dijeda untuk penulisan data selama proses pencadangan dan pemulihan, dan memerlukan konsistensi data yang kuat. |
Persiapkan lingkungan
Item | Kluster pencadangan | Restore cluster |
Versi kluster | 1.16.9-aliyun.1 | 1.28.3-aliyun.1 |
Versi runtime | Docker 19.03.5 | containerd 1.6.20 |
Versi komponen penyimpanan | FlexVolume: v1.14.8.109-649dc5a-aliyun | CSI: v1.26.5-56d1e30-aliyun |
Lainnya |
| Komponen penyimpanan csi-plugin dan csi-provisioner telah diinstal. Untuk informasi selengkapnya, lihat Kelola komponen. |
Langkah 1: Deploy aplikasi uji coba
Jalankan perintah berikut untuk deploy volume disk yang disediakan secara dinamis.
Ganti
alicloud-disk-topologydengan nama StorageClass disk default untuk plug-in penyimpanan FlexVolume di kluster Anda.cat << EOF | kubectl apply -f - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: disk-essd spec: accessModes: - ReadWriteOnce storageClassName: alicloud-disk-topology resources: requests: storage: 20Gi EOFJalankan perintah berikut untuk deploy volume NAS yang disediakan secara statis.
Ganti
serverdengan titik pemasangan sistem file NAS di akun Anda.cat << EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas spec: capacity: storage: 5Gi storageClassName: nas accessModes: - ReadWriteMany flexVolume: driver: "alicloud/nas" options: server: "1758axxxxx-xxxxx.cn-beijing.nas.aliyuncs.com" vers: "3" options: "nolock,tcp,noresvport" --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany storageClassName: nas resources: requests: storage: 5Gi EOFJalankan perintah berikut untuk deploy aplikasi. Aplikasi ini memasang volume disk dan NAS dari langkah sebelumnya.
apiVersiondalam kode berikut menggunakan extensions/v1beta1.apiVersionini telah ditinggalkan di kluster versi 1.28.cat << EOF | kubectl apply -f - apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: nas mountPath: /cold - name: disk mountPath: /hot volumes: - name: nas persistentVolumeClaim: claimName: pvc-nas - name: disk persistentVolumeClaim: claimName: disk-essd EOFJalankan perintah berikut untuk memverifikasi bahwa aplikasi yang dideploy telah dimulai.
kubectl get pod -l app=nginxOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nginx-5ffbc895b-xxxxx 1/1 Running 0 2m28s
Langkah 2: Instal pusat cadangan
Di kluster pencadangan, instal komponen layanan pencadangan migrate-controller.
CatatanUntuk kluster yang menjalankan Kubernetes 1.16 atau lebih baru, Anda dapat langsung menginstal komponen layanan pencadangan versi V1.7.6 atau lebih baru dari pasar komponen.
Jika kluster pencadangan Anda adalah Kluster Edisi Khusus Kubernetes atau kluster terdaftar, atau menggunakan plug-in penyimpanan selain CSI (seperti FlexVolume), Anda perlu mengonfigurasi izin tambahan. Untuk informasi selengkapnya, lihat Kluster terdaftar.
(Opsional) Jika kluster Anda adalah kluster FlexVolume, jalankan perintah berikut untuk memastikan izin yang diperlukan telah dikonfigurasi.
kubectl -n csdr get secret alibaba-addon-secret(Opsional) Jika kluster Anda adalah kluster FlexVolume, jalankan perintah berikut untuk menambahkan variabel lingkungan
USE_FLEXVOLUMEuntuk migrate-controller di namespace kube-system.PentingDi kluster FlexVolume, setelah komponen layanan pencadangan
migrate-controllerdiinstal, podmigrate-controllerkeluar secara tidak terduga, dan membuka halaman Application Backup kluster mengembalikan error 404. Dalam kasus ini, Anda harus mengedit file YAML komponen untuk menambahkan variabel lingkunganUSE_FLEXVOLUME.kubectl -n kube-system patch deployment migrate-controller --type json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"USE_FLEXVOLUME","value":"true"}}]'Jalankan perintah berikut untuk memastikan komponen layanan pencadangan berjalan dengan baik.
kubectl -n kube-system get pod -l app=migrate-controller kubectl -n csdr get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE migrate-controller-6c8b9c6cbf-967x7 1/1 Running 0 3m55s NAME READY STATUS RESTARTS AGE csdr-controller-69787f6dc8-f886h 1/1 Running 0 3m39s csdr-velero-58494f6bf4-52mv6 1/1 Running 0 3m37s
Langkah 3: Buat cadangan
Di wilayah yang sama dengan kluster pencadangan, buat Bucket OSS dengan format nama
cnfs-oss-*untuk menyimpan cadangan. Untuk informasi selengkapnya, lihat Buat bucket.CatatanKluster ACK yang dikelola memiliki izin untuk Bucket OSS yang namanya diawali dengan
cnfs-oss-*secara default. Jika format penamaan bucket Anda tidak memenuhi persyaratan, Anda juga perlu mengonfigurasi izin tambahan. Untuk informasi selengkapnya, lihat Instal komponen dan konfigurasikan izin di konsol.Jalankan perintah berikut untuk membuat tugas pencadangan segera.
Untuk informasi tentang cara mengonfigurasi pengaturan pencadangan di konsol ACK, lihat Cadangkan dan pulihkan aplikasi di kluster. Langkah ini memberikan konfigurasi yang direkomendasikan untuk skenario contoh. Sesuaikan pengaturan sesuai skenario spesifik Anda.
cat << EOF | kubectl apply -f - apiVersion: csdr.alibabacloud.com/v1beta1 kind: ApplicationBackup metadata: annotations: csdr.alibabacloud.com/backuplocations: '{"name":"<your-backup-vault-name>","region":"<your-region-id>","bucket":"<your-oss-bucket-name>","provider":"alibabacloud"}' labels: csdr/schedule-name: fake-name name: <your-backup-name> namespace: csdr spec: excludedNamespaces: - csdr - kube-system - kube-public - kube-node-lease excludedResources: - storageclasses - clusterroles - clusterrolebindings - events - persistentvolumeclaims - persistentvolumes includeClusterResources: true pvBackup: defaultPvBackup: true storageLocation: <your-backup-vault-name> ttl: 720h0m0s EOFParameter
Deskripsi
excludedNamespaces
Namespace yang dikecualikan dari pencadangan. Kami menyarankan agar Anda mengecualikan namespace berikut:
csdr: Namespace kerja untuk pusat cadangan. Pusat cadangan memiliki logika sinkronisasi antar kluster. Jangan mencadangkan tugas secara manual, seperti pencadangan atau pemulihan, di namespace csdr. Tindakan ini dapat menyebabkan perilaku yang tidak terduga.kube-system,kube-public, dankube-node-leaseadalah namespace yang ada secara default di kluster ACK. Namespace tersebut tidak dapat dengan mudah dipulihkan antar kluster karena perbedaan parameter dan konfigurasi kluster.
excludedResources
Resource yang dikecualikan. Anda dapat mengonfigurasi parameter ini berdasarkan kebutuhan bisnis Anda.
includeClusterResources
Menentukan apakah akan mencadangkan resource tingkat kluster, seperti StorageClasses, CRD, dan webhook.
true: Mencadangkan semua resource tingkat kluster.false: Hanya mencadangkan resource tingkat kluster yang dirujuk oleh resource tingkat namespace di namespace yang dipilih. Misalnya, saat Anda mencadangkan Pod, jika ServiceAccount yang dirujuk diotorisasi oleh ClusterRole, ClusterRole tersebut akan dicadangkan secara otomatis. Saat Anda mencadangkan CR, CRD-nya akan dicadangkan secara otomatis.
CatatanSecara default,
IncludeClusterResourcesdiatur kefalseuntuk tugas pencadangan yang dibuat di Konsol ACK.defaultPvBackup
Menentukan apakah akan mencadangkan data volume.
true: Mencadangkan aplikasi dan data di volume yang digunakan oleh Pod yang sedang berjalan.false: Hanya mencadangkan aplikasi.
PentingUntuk kluster yang menjalankan Kubernetes dan CSI versi 1.18 atau lebih baru, pusat cadangan menggunakan snapshot ECS untuk mencadangkan data disk secara default. Untuk jenis penyimpanan lain atau untuk data disk di kluster yang menjalankan versi Kubernetes dari 1.16 hingga (tetapi tidak termasuk) 1.18, Cloud Backup digunakan.
Untuk volume yang tidak digunakan oleh pod yang sedang berjalan, Anda hanya dapat menggunakan metode sumber data tidak berubah. Ini memerlukan pembuatan PV dan PVC statis secara manual di kluster baru dan menentukan sumber data asli, seperti ID disk atau bucket OSS.
Jika aplikasi Anda memerlukan konsistensi data yang kuat, jeda penulisan data selama periode pencadangan. Atau, Anda dapat memilih metode sumber data tidak berubah dan hanya mencadangkan aplikasi.
Jalankan perintah berikut untuk menanyakan status tugas pencadangan.
kubectl -ncsdr describe applicationbackup <your-backup-name>Dalam output yang diharapkan, parameter
PhasedariStatusberubah menjadiCompleted, yang menunjukkan bahwa tugas pencadangan berhasil dibuat.Jalankan perintah berikut untuk memastikan daftar resource untuk cadangan ini.
kubectl -ncsdr get pod | grep csdr-velero kubectl -ncsdr exec -it <csdr-velero-pod-name> -- /velero describe backup <your-backup-name> --detailsAnda dapat memeriksa daftar untuk resource yang tidak dicadangkan dan menyesuaikan konfigurasi pencadangan untuk menjalankan pencadangan lagi.
Resource List: apiextensions.k8s.io/v1/CustomResourceDefinition: - volumesnapshots.snapshot.storage.k8s.io v1/Endpoints: - default/kubernetes v1/Namespace: - default v1/PersistentVolume: - d-2ze88915lz1il01v1yeq - pv-nas v1/PersistentVolumeClaim: - default/disk-essd - default/pvc-nas v1/Secret: - default/default-token-n7jss - default/oss-secret - default/osssecret v1/Service: - default/kubernetes v1/ServiceAccount: - default/default ...
Langkah 4: Instal pusat cadangan
Instal Pusat Cadangan di kluster pemulihan. Untuk informasi selengkapnya, lihat Langkah 2: Instal pusat cadangan.
Kaitkan penyimpanan cadangan yang telah Anda buat dengan kluster pemulihan.
Login ke Konsol ACK.
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih .
Di halaman Application Backup, klik Restore.
Pilih Backup Vault yang digunakan untuk pencadangan, klik Initialize Backup Vault, dan tunggu hingga cadangan disinkronkan ke kluster ini.
(Opsional) Langkah 5: Buat PVC dan PV secara manual
Dalam sebagian besar skenario, Anda cukup mengikuti Langkah 6 untuk membuat tugas pemulihan secara langsung di kluster pemulihan. Komponen Pusat Cadangan kemudian secara otomatis menghasilkan klaim dan volume penyimpanan berdasarkan cadangan.
Saat Pusat Cadangan menjalankan tugas pemulihan, komponen tersebut melewati pemulihan PVC dan PV dengan nama yang sama untuk melindungi data yang ada. Artinya, komponen tersebut tidak membangun ulang atau menimpa data di dalam volume. Oleh karena itu, dalam skenario berikut, Anda dapat membuat PVC dan PV terlebih dahulu sebelum tugas pemulihan untuk pemulihan yang lebih fleksibel:
Anda mencadangkan volume, tetapi beberapa volume berisi data yang tidak perlu dimigrasikan, seperti log. Anda dapat membuat volume kosong terlebih dahulu.
Anda mencadangkan volume, tetapi volume di kluster pencadangan yang tidak digunakan oleh pod yang sedang berjalan juga perlu dimigrasikan ke kluster pemulihan.
Anda tidak mencadangkan volume, dan daftar
excludedResourcesmencakuppersistentvolumeclaimsdanpersistentvolumes, atau migrasi melibatkan pemindahan aplikasi dari kluster FlexVolume ke kluster CSI.
Berikut adalah langkah-langkah spesifiknya:
Disk tidak dapat dipasang lintas zona ketersediaan. Jika Anda beralih ke zona ketersediaan yang berbeda di kluster pemulihan, pilih salah satu metode berikut:
Sinkronkan data menggunakan metode perubahan sumber data.
Login ke Konsol Manajemen ECS, buat snapshot tunggal secara manual untuk disk tersebut, dan gunakan snapshot tersebut untuk membuat disk di zona ketersediaan baru. Untuk informasi selengkapnya, lihat Buat disk dari snapshot. Di file YAML
outputfile.txtberikut, ganti ID disk dan ID zona ketersediaan dinodeAffinity.
(Opsional) Jika kluster pencadangan Anda adalah kluster FlexVolume, Anda dapat menggunakan tool command-line untuk mengonversi file YAML secara batch karena YAML untuk PV dan PVC berbeda antara FlexVolume dan CSI. Untuk informasi selengkapnya, lihat Gunakan tool command-line FlexVolume2CSI untuk mengonversi file YAML secara batch.
Jalankan perintah berikut untuk deploy file YAML CSI yang diperoleh dari FlexVolume2CSI.
di mana
outputfile.txtadalah output konversi YAML dari tool command-line.kubectl apply -f outputfile.txtJalankan perintah berikut untuk memastikan PVC di kluster pemulihan berada dalam status
Bound.kubectl get pvcOutput yang diharapkan:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE disk-essd Bound d-2ze88915lz1il0xxxxxx 20Gi RWO alicloud-disk-essd 29m pvc-nas Bound pv-nas 5Gi RWX nas 29m
Langkah 6: Buat tugas pemulihan
Jika resource dengan nama yang sama sudah ada di kluster pemulihan, tugas pemulihan akan melewati resource tersebut.
Pusat Cadangan berfokus pada pencadangan dan pemulihan aplikasi bisnis. Sebelum memulai tugas pemulihan, Anda harus menginstal dan mengonfigurasi komponen sistem yang diperlukan di kluster pemulihan. Contohnya:
Komponen bebas rahasia ACR: Anda perlu memberikan otorisasi ulang ke kluster pemulihan dan mengonfigurasi
acr-configuration.Komponen ALB Ingress: Anda perlu mengonfigurasi
ALBConfigdan resource terkait lainnya terlebih dahulu.
Saat memulihkan resource Service, Pusat Cadangan menyesuaikannya berdasarkan jenis Service:
Service
NodePort: Saat memulihkan lintas kluster, Pusat Cadangan mempertahankan nomor port secara default.Untuk Service bertipe LoadBalancer, saat
ExternalTrafficPolicydiatur keLocal,HealthCheckNodePortmenggunakan nomor port acak secara default. Untuk mempertahankan nomor port, aturspec.preserveNodePorts: truesaat membuat tugas pemulihan.Jika Service di kluster pencadangan menggunakan instans SLB yang sudah ada, service yang dipulihkan akan menggunakan instans SLB asli dan menonaktifkan pendengar paksa secara default. Anda perlu mengonfigurasi pendengar di konsol SLB.
Jika instans SLB untuk Service di kluster pencadangan dikelola oleh CCM, instans SLB baru akan dibuat oleh CCM saat pemulihan. Untuk informasi selengkapnya, lihat Catatan konfigurasi load balancer untuk Service.
Jika Anda mencadangkan volume saat membuat cadangan, Anda menggunakan metode perubahan sumber data untuk pencadangan dan pemulihan. Anda dapat mengubah jenis penyimpanan dengan menggunakan konversi StorageClass (convertedarg). Misalnya, Anda dapat mengonversi penyimpanan NAS menjadi penyimpanan disk. Anda dapat memilih StorageClass target sesuai kebutuhan.
Dalam contoh ini, karena kluster pencadangan adalah kluster FlexVolume v1.16 dan pencadangan volume disk menggunakan Cloud Backup, Anda dapat memilih alicloud-disk sebagai StorageClass target untuk klaim penyimpanan disk-essd (yang dikonversi ke kelas disk CSI dan secara default menjadi alicloud-disk-topology-alltype). Jika kluster pencadangan Anda adalah kluster CSI v1.18 atau lebih baru, Anda tidak perlu melakukan konfigurasi terkait untuk volume disk.
Contoh ini juga mengonversi volume NAS FlexVolume menjadi volume NAS terisolasi yang dikelola CNFS dengan memilih StorageClass target
alibabacloud-cnfs-nasuntuk PVCpvc-nas. Jika kluster Anda tidak memiliki StorageClassalibabacloud-cnfs-nas, lihat Kelola sistem file NAS menggunakan CNFS.
Berikut adalah langkah-langkah spesifiknya:
Jalankan perintah berikut untuk membuat tugas pemulihan.
Untuk informasi tentang cara mengonfigurasi tugas pemulihan di konsol ACK, lihat Pulihkan aplikasi dan volume data. Langkah ini memberikan konfigurasi yang direkomendasikan untuk skenario contoh. Sesuaikan pengaturan sesuai skenario spesifik Anda.
cat << EOF | kubectl apply -f - apiVersion: csdr.alibabacloud.com/v1beta1 kind: ApplicationRestore metadata: annotations: csdr.alibabacloud.com/backuplocations: >- '{"name":"<your-backup-vault-name>","region":"<your-region-id>","bucket":"<your-oss-bucket-name>","provider":"alibabacloud"}' name: <your-restore-name> namespace: csdr spec: backupName: <your-backup-name> excludedNamespaces: - arms-prom excludedResources: - secrets appRestoreOnly: false convertedarg: - convertToStorageClassType: alicloud-disk-topology-alltype namespace: default persistentVolumeClaim: alicloud-disk - convertToStorageClassType: alibabacloud-cnfs-nas namespace: default persistentVolumeClaim: pvc-nas namespaceMapping: <backupNamespace>: <restoreNamespace> EOFParameter
Deskripsi
excludedNamespaces
Namespace yang dikecualikan. Anda dapat mengecualikan namespace yang tidak diinginkan dari daftar resource cadangan.
excludedResources
Resource yang dikecualikan. Anda dapat mengecualikan jenis resource yang tidak diinginkan dari daftar resource cadangan.
appRestoreOnly
Untuk cadangan yang mencakup volume, parameter ini menentukan apakah akan memulihkan volume tersebut.
true: Membuat volume dinamis dan klaim penyimpanan yang mengarah ke sumber data baru selama pemulihan. Tugas pencadangan yang dibuat di konsol secara default diatur ke true.false: Volume statis tidak dibuat. Anda harus men-deploy volume statis secara manual terlebih dahulu.
CatatanUmumnya, atur nilai ini ke
trueuntuk perubahan sumber data dan kefalseuntuk sumber data tidak berubah.convertedarg
Daftar konversi StorageClass. Untuk volume bertipe FileSystem, seperti OSS, NAS, CPFS, dan volume lokal, Anda dapat mengonfigurasi parameter ini untuk mengonversi StorageClass PVC-nya ke StorageClass yang ditentukan selama proses pemulihan. Misalnya, Anda dapat mengonversi volume NAS menjadi volume disk.
convertToStorageClassType: StorageClass yang diinginkan. Pastikan StorageClass tersebut ada di kluster saat ini. Anda hanya dapat menentukan StorageClass disk atau NAS.
namespace: namespace dari PVC.
persistentVolumeClaim: nama PVC.
Di atas adalah parameter yang diperlukan untuk fitur konversi StorageClass.
Jalankan perintah berikut untuk menanyakan status tugas pemulihan.
kubectl -ncsdr describe applicationrestore <your-restore-name>Dalam output yang diharapkan,
PhasedariStatusberubah menjadiCompleted, yang menunjukkan bahwa tugas berhasil dipulihkan.Jalankan perintah berikut untuk memeriksa apakah ada resource yang gagal dipulihkan dan menemukan penyebab kegagalannya.
kubectl -ncsdr get pod | grep csdr-velero kubectl -ncsdr exec -it <csdr-velero-pod-name> -- /velero describe restore <your-restore-name> --detailsOutput yang diharapkan:
Warnings: Velero: <none> Cluster: could not restore, ClusterRoleBinding "kubernetes-proxy" already exists. Warning: the in-cluster version is different than the backed-up version. Namespaces: demo-ns: could not restore, ConfigMap "kube-root-ca.crt" already exists. Warning: the in-cluster version is different than the backed-up version. could not restore, Endpoints "kubernetes" already exists. Warning: the in-cluster version is different than the backed-up version. could not restore, Service "kubernetes" already exists. Warning: the in-cluster version is different than the backed-up version. Errors: Velero: <none> Cluster: <none> Namespaces: demo-ns: error restoring endpoints/xxxxxx/kubernetes: Endpoints "kubernetes" is invalid: subsets[0].addresses[0].ip: Invalid value: "169.254.128.9": may not be in the link-local range (169.xxx.0.0/16, fe80::/10) error restoring endpointslices.discovery.k8s.io/demo-ns/kubernetes: EndpointSlice.discovery.k8s.io "kubernetes" is invalid: endpoints[0].addresses[0]: Invalid value: "169.xxx.128.9": may not be in the link-local range (169.xxx.0.0/16, fe80::/10) error restoring services/xxxxxx/kubernetes-extranet: Service "kubernetes-extranet" is invalid: spec.ports[0].nodePort: Invalid value: 31882: provided port is already allocatedDari output di atas, Anda dapat melihat apakah ada resource di kluster pemulihan yang tidak dipulihkan. Misalnya,
Warningsmenunjukkan bahwa resource sudah ada dan dilewati.Errorsmenunjukkan konflik NodePort, karena port asli dipertahankan selama pemulihan lintas kluster.Pastikan aplikasi yang dipulihkan berjalan dengan baik.
Setelah aplikasi dipulihkan, periksa apakah ada resource yang berada dalam status abnormal karena batasan aplikasi, exception runtime kontainer, atau alasan lainnya. Jika demikian, perbaiki secara manual.
Setelah pemulihan diverifikasi,
apiVersionaplikasi Nginx secara default disesuaikan menjadi apps/v1, yang direkomendasikan untuk kluster versi 1.28.