Anda dapat menggunakan Pusat Cadangan untuk memigrasikan aplikasi dari klaster Container Service for Kubernetes (ACK) yang menggunakan FlexVolume ke klaster ACK yang menggunakan CSI. Anda juga dapat memigrasikan aplikasi dari klaster ACK dengan versi Kubernetes lama ke klaster ACK dengan versi Kubernetes baru. Pusat Cadangan membantu memigrasikan aplikasi lintas klaster yang menggunakan plug-in volume berbeda atau menjalankan versi Kubernetes berbeda. Sebagai contoh, Anda dapat mencadangkan sumber daya tingkat klaster yang tidak aktif atau secara otomatis beralih ke versi API yang didukung oleh klaster tempat sumber daya dipulihkan. Topik ini menjelaskan cara menggunakan Pusat Cadangan untuk memigrasikan aplikasi. Dalam topik ini, aplikasi dalam klaster yang menggunakan FlexVolume dan menjalankan Kubernetes 1.16 dimigrasikan ke klaster yang menggunakan CSI dan menjalankan Kubernetes 1.28.
Catatan penggunaan
Klaster cadangan dan klaster pemulihan harus diterapkan di wilayah yang sama. Klaster cadangan harus menjalankan Kubernetes 1.16 atau lebih baru. Kami menyarankan agar Anda tidak menggunakan Pusat Cadangan untuk memigrasikan aplikasi dari klaster yang menjalankan versi Kubernetes baru ke klaster yang menjalankan versi Kubernetes lama untuk menghindari masalah kompatibilitas versi API.
Pusat Cadangan tidak mencadangkan sumber daya yang sedang dihapus.
Untuk memulihkan cadangan ke volume File Storage NAS (NAS) yang dikelola oleh CNFS (dengan menyetel StorageClass ke alibabacloud-cnfs-nas), Anda perlu membuat StorageClass terlebih dahulu. Untuk informasi lebih lanjut, lihat Gunakan CNFS untuk Mengelola Sistem File NAS (Disarankan).
Pusat Cadangan sebaiknya memulihkan aplikasi ke versi API yang disarankan untuk klaster pemulihan. Jika tidak ada versi API yang didukung oleh versi Kubernetes lama dan baru suatu sumber daya, Anda perlu menerapkan sumber daya tersebut secara manual. Contoh:
Deployment dalam klaster yang menjalankan Kubernetes 1.16 mendukung
extensions/v1beta1,apps/v1beta1,apps/v1beta2, danapps/v1. Dalam skenario ini, versi API Deployment dalam klaster yang menjalankan Kubernetes 1.28 dipulihkan keapps/v1.Ingress dalam klaster yang menjalankan Kubernetes 1.16 mendukung
extensions/v1beta1dannetworking.k8s.io/v1beta1. Dalam skenario ini, Anda tidak dapat memulihkan Ingress dalam klaster yang menjalankan Kubernetes 1.22 atau lebih baru.
Untuk informasi lebih lanjut tentang pembaruan API untuk versi Kubernetes berbeda, lihat Catatan Rilis untuk Versi Kubernetes yang Didukung oleh ACK dan Panduan Migrasi API yang Ditinggalkan.
PentingDalam klaster yang menjalankan Kubernetes 1.16, grup seperti
appsdanrbac.authorization.k8s.iosudah mendukung versi API v1. Setelah Anda memigrasikan aplikasi ke klaster yang menjalankan Kubernetes 1.28, Anda perlu memulihkan sumber daya Ingress dan CronJob secara manual.
Skenario penggunaan
Migrasikan Aplikasi Lintas Klaster yang Menggunakan Plug-in Volume Berbeda
Klaster ACK yang versi Kubernetes-nya 1.20 atau lebih baru tidak lagi mendukung FlexVolume. Anda dapat menggunakan Pusat Cadangan untuk memigrasikan aplikasi stateful dari klaster yang menggunakan FlexVolume ke klaster yang menggunakan CSI.
CatatanKlaster cadangan dapat menggunakan FlexVolume atau CSI tetapi klaster pemulihan harus menggunakan CSI.
Migrasikan Aplikasi Lintas Klaster yang Menjalankan Versi Kubernetes Berbeda
Dalam beberapa skenario, Anda mungkin perlu memigrasikan aplikasi dari klaster yang menjalankan versi Kubernetes lama (1.16 atau lebih baru). Sebagai contoh, Anda mungkin ingin mengganti plug-in jaringan dari Flannel ke Terway. Anda dapat menggunakan Pusat Cadangan untuk memigrasikan aplikasi lintas beberapa versi Kubernetes. Pusat Cadangan dapat secara otomatis menyesuaikan konfigurasi dasar template aplikasi, seperti versi API, ke versi Kubernetes baru.
Prasyarat
Cloud Backup telah diaktifkan. Untuk mencadangkan volume yang menggunakan sistem file NAS, bucket OSS, dan disk lokal atau mencadangkan volume dalam skenario cloud hybrid, Anda harus mengonfigurasi Pusat Cadangan untuk menggunakan Cloud Backup guna membuat cadangan. Untuk informasi lebih lanjut, lihat Cadangan Cloud.
Klaster tempat volume dipulihkan telah dibuat. Untuk memastikan bahwa Anda dapat menggunakan snapshot Elastic Compute Service (ECS) untuk memulihkan data disk, kami menyarankan Anda memperbarui versi Kubernetes klaster menjadi 1.18 atau lebih baru. Untuk informasi lebih lanjut, lihat Buat Klaster ACK yang Dikelola, Buat Klaster ACK Khusus (Tidak Dilanjutkan), atau Buat Proxy Pendaftaran Klaster dan Daftarkan Klaster Kubernetes yang Diterapkan di Pusat Data.
PentingKlaster pemulihan harus menggunakan plug-in Container Storage Interface (CSI). Pemulihan aplikasi tidak didukung dalam klaster 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 dalam klaster pemulihan. Contoh:
aliyun-acr-credential-helper: Anda perlu memberikan izin ke klaster pemulihan dan mengonfigurasi acr-configuration.
alb-ingress-controller: Anda perlu mengonfigurasi ALBConfig.
Untuk membuat snapshot disk guna mencadangkan volume, Anda harus menginstal CSI 1.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Kelola Komponen csi-plugin dan csi-provisioner.
Alur kerja migrasi
Alur kerja migrasi bervariasi berdasarkan plug-in volume yang digunakan oleh klaster cadangan. Gambar berikut menunjukkan detailnya.
Tidak Ada Aplikasi dalam Klaster Cadangan yang Menggunakan Volume
Klaster Cadangan Menggunakan FlexVolume
Klaster Cadangan Menggunakan CSI
Prosedur
Klaster ACK yang menggunakan FlexVolume dan menjalankan Kubernetes 1.16 digunakan dalam contoh ini. Contoh ini menunjukkan cara memigrasikan aplikasi, konfigurasi, dan volume dari klaster tersebut ke klaster ACK yang menggunakan CSI dan menjalankan Kubernetes 1.28. Anda dapat melakukan migrasi dengan mengubah sumber data atau tanpa mengubah sumber data. Untuk memigrasikan aplikasi yang tidak menggunakan volume atau memigrasikan aplikasi dari klaster yang menggunakan CSI, Anda dapat melewati langkah-langkah opsional.
Jika Anda tidak mengubah sumber data, atur kebijakan klaim Persistent Volume (PV) di klaster cadangan ke Retain. Jika tidak, data akan dihapus setelah Anda menghapus volume.
kubectl patch pv/<pv-name> --type='json' -p '[{"op":"replace","path":"/spec/persistentVolumeReclaimPolicy","value":"Retain"}]'Metode | Deskripsi | Skema penggunaan |
Ubah sumber data | Cadangkan data yang disimpan dalam volume di klaster cadangan dan sinkronkan cadangan ke klaster pemulihan. Ini berarti bahwa klaster cadangan dan pemulihan masing-masing menggunakan sumber data. Proses pemulihan data menggunakan volume yang diatur secara dinamis. Anda dapat mengubah jenis volume dengan mengubah StorageClass. Sebagai contoh, Anda dapat mengubah volume NAS menjadi volume disk. |
|
Jangan ubah sumber data | Proses pemulihan menggunakan volume yang diatur secara statis yang dipulihkan dari persistent volumes (PV) dan persistent volume claims (PVC) dalam cadangan. Oleh karena itu, klaster cadangan dan pemulihan menggunakan sumber data yang sama, seperti ID disk atau Object Storage Service (OSS) bucket. Jika Anda ingin memigrasikan aplikasi dari FlexVolume ke CSI, Anda perlu membuat PV dan PVC yang diatur secara statis secara manual karena CSI tidak mendukung template YAML FlexVolume. | Anda tidak dapat menangguhkan operasi penulisan untuk bisnis Anda selama pemulihan data dan bisnis memerlukan konsistensi data. |
Siapkan lingkungan
Metode | Klaster cadangan | Klaster pemulihan |
Versi Kubernetes | 1.16.9-aliyun.1 | 1.28.3-aliyun.1 |
Versi runtime | Docker 19.03.5 | containerd 1.6.20 |
Versi plug-in volume | FlexVolume: v1.14.8.109-649dc5a-aliyun | CSI: v1.26.5-56d1e30-aliyun |
Lainnya |
| Instal plug-in csi-plugin dan csi-provisioner. Untuk informasi lebih lanjut, lihat Kelola komponen. |
Langkah 1: Sebarkan aplikasi uji
Jalankan perintah berikut untuk menyebarkan volume disk yang diatur secara dinamis.
Ganti
alicloud-disk-topologydengan nama default disk StorageClass yang diinstal oleh plug-in FlexVolume di klaster 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 menyebarkan volume NAS yang diatur secara statis.
Ganti
serverdengan titik mount sistem file NAS 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 menyebarkan aplikasi dan mount volume disk dan NAS ke aplikasi.
apiVersiondalam kode berikut diatur ke extensions/v1beta1.Versi APIini sudah tidak digunakan lagi di Kubernetes 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 memastikan bahwa aplikasi berjalan normal:
kubectl get pod -l app=nginxHasil yang Diharapkan:
NAME READY STATUS RESTARTS AGE nginx-5ffbc895b-xxxxx 1/1 Running 0 2m28s
Langkah 2: Instal pusat cadangan di klaster cadangan
Instal migrate-controller di klaster cadangan.
CatatanAnda dapat langsung menginstal migrate-controller 1.7.6 atau lebih baru di klaster yang versi Kubernetes-nya lebih baru dari 1.16 dari halaman Add-ons di konsol ACK.
Jika klaster cadangan adalah klaster khusus ACK, klaster terdaftar, atau klaster yang menggunakan plug-in volume selain CSI (seperti FlexVolume), Anda perlu memberikan izin tambahan. Untuk informasi lebih lanjut, lihat Klaster Terdaftar.
(Opsional) Jika klaster Anda menggunakan FlexVolume, jalankan perintah berikut untuk memastikan bahwa izin yang diperlukan telah diberikan:
kubectl -n csdr get secret alibaba-addon-secret(Opsional) Jika klaster Anda menggunakan FlexVolume, jalankan perintah berikut untuk menambahkan variabel lingkungan
USE_FLEXVOLUMEuntuk menerapkan migrate-controller di namespace kube-system.PentingSetelah migrate-controller diinstal di klaster yang menggunakan FlexVolume, pod migrate-controller keluar secara tidak normal dan halaman cadangan aplikasi menampilkan kesalahan 404. Dalam kasus ini, Anda perlu menambahkan variabel lingkungan USE_FLEXVOLUME ke file YAML migrate-controller.
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 bahwa migrate-controller berjalan normal:
kubectl -n kube-system get pod -l app=migrate-controller kubectl -n csdr get podHasil 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 klaster cadangan
Buat Bucket OSS bernama
cnfs-oss-*di wilayah klaster cadangan untuk menyimpan cadangan.CatatanSecara default, klaster ACK yang dikelola memiliki izin pada bucket OSS bernama
cnfs-oss-*. Jika bucket OSS Anda tidak sesuai dengan konvensi penamaan, Anda perlu memberikan izin tambahan. Untuk informasi lebih lanjut, lihat Instal migrate-controller dan Berikan Izin.Jalankan perintah berikut untuk membuat tugas cadangan waktu nyata.
Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter cadangan di konsol, lihat Cadangkan dan Pulihkan Aplikasi di Klaster ACK. Anda dapat memodifikasi konfigurasi yang disarankan dalam langkah ini berdasarkan skenario aktual.
cat << EOF | kubectl apply -f - apiVersion: csdr.alibabacloud.com/v1beta1 kind: ApplicationBackup metadata: annotations: csdr.alibabacloud.com/backuplocations: '{"name":"<Nama vault cadangan>","region":"<ID Wilayah, seperti cn-beijing>","bucket":"<Nama bucket OSS yang terkait dengan vault cadangan>","provider":"alibabacloud"}' labels: csdr/schedule-name: fake-name name: <Nama cadangan> 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: <Nama vault cadangan> ttl: 720h0m0s EOFParameter
Deskripsi
excludedNamespaces
Daftar namespace yang akan dikecualikan dari tugas cadangan. Kami menyarankan Anda mengecualikan namespace berikut:
csdr: namespace pusat cadangan. Pusat cadangan secara otomatis menyinkronkan data antar klaster. Jangan mencadangkan tugas cadangan dan pemulihan di namespace csdr secara manual. Jika tidak, pengecualian mungkin terjadi.kube-system,kube-public, dankube-node-lease: namespace default dalam klaster ACK. Namespace ini tidak dapat dipulihkan secara langsung karena parameter atau konfigurasi klaster yang berbeda.
excludedResources
Daftar sumber daya yang akan dikecualikan dari tugas cadangan. Konfigurasikan daftar berdasarkan kebutuhan bisnis Anda.
includeClusterResources
Tentukan apakah akan mencadangkan semua sumber daya tingkat klaster, seperti StorageClasses, CustomResourceDefinitions (CRDs), dan webhook.
true: mencadangkan semua sumber daya tingkat klaster.false: mencadangkan hanya sumber daya tingkat klaster yang digunakan oleh sumber daya tingkat namespace di namespace yang ditentukan. Sebagai contoh, ketika sistem mencadangkan pod, akun layanan yang digunakan oleh pod diberi peran klaster. Dalam hal ini, peran klaster dicadangkan secara otomatis. Ketika sistem mencadangkan CustomResource (CR), CRD yang sesuai juga dicadangkan.
CatatanSecara default,
IncludeClusterResourcesdiatur kefalseuntuk tugas cadangan yang dibuat di konsol ACK.defaultPvBackup
Tentukan apakah akan mencadangkan data dalam volume.
true: mencadangkan aplikasi dan data yang digunakan oleh pod yang sedang berjalan di volume.false: mencadangkan hanya aplikasi.
PentingSecara default, snapshot Elastic Compute Service (ECS) dibuat untuk mencadangkan volume disk di klaster yang versi Kubernetes dan CSI-nya keduanya 1.18 atau lebih baru. Cloud Backup digunakan untuk mencadangkan jenis volume lainnya di klaster sebelumnya atau volume disk di klaster yang versi Kubernetes dan CSI-nya antara 1.16 dan 1.18 (tidak termasuk 1.18).
Untuk volume yang tidak digunakan oleh pod yang sedang berjalan, Anda harus membuat PV dan PVC yang diatur secara statis secara manual di klaster pemulihan dan menentukan sumber volume, seperti ID disk atau bucket OSS. Ini berarti Anda tidak dapat mengubah sumber data dalam skenario ini.
Jika bisnis Anda sangat bergantung pada konsistensi data, Anda perlu menangguhkan operasi penulisan selama proses cadangan. Anda juga dapat mencadangkan hanya aplikasi tanpa mengubah sumber data.
Jalankan perintah berikut untuk memeriksa status tugas cadangan:
kubectl -ncsdr describe applicationbackup <Nama cadangan>Jika
Phasedi kolomStatusdalam output berubah menjadiCompleted, tugas cadangan telah dibuat.Jalankan perintah berikut untuk memastikan daftar sumber daya yang akan dicadangkan:
kubectl -ncsdr get pod | grep csdr-velero kubectl -ncsdr exec -it <Nama pod csdr-velero> -- /velero describe backup <Nama cadangan> --detailsAnda dapat melihat sumber daya yang dilewati dalam daftar cadangan, memodifikasi parameter cadangan, lalu menjalankan ulang tugas cadangan.
Daftar Sumber Daya: 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 di klaster pemulihan
Instal Pusat Cadangan di klaster pemulihan. Untuk informasi lebih lanjut, lihat Langkah 2: Instal Pusat Cadangan di Klaster Cadangan.
Hubungkan vault cadangan sebelumnya dengan klaster pemulihan.
Masuk ke Konsol ACK.
Di halaman Clusters, temukan klaster yang ingin Anda kelola dan klik namanya. Di panel sisi kiri, pilih .
Di halaman Application Backup, klik Restore.
Pilih vault cadangan Anda dari daftar drop-down Backup Vaults, klik Initialize Backup Vault, lalu tunggu sistem menyinkronkan cadangan ke klaster saat ini.
(Opsional) Langkah 5: Buat PV dan PVC secara manual di klaster pemulihan
Dalam sebagian besar skenario, Anda hanya perlu melakukan Langkah 6 untuk membuat tugas pemulihan di klaster pemulihan. Pusat Cadangan akan secara otomatis membuat PV dan PVC dari cadangan.
Untuk melindungi data, ketika Pusat Cadangan menjalankan tugas pemulihan, ia tidak membuat ulang atau menimpa PV dan PVC yang sudah ada dengan nama yang sama dengan cadangan. Dalam skenario berikut, Anda dapat membuat PV dan PVC sebelum tugas pemulihan dimulai.
Anda ingin mencadangkan volume dan melewati log yang disimpan di beberapa volume.
Anda ingin mencadangkan volume yang tidak digunakan oleh pod yang sedang berjalan.
Anda tidak ingin mencadangkan volume dan persistentvolumeclaims serta persistentvolumes ditentukan dalam daftar excludedResources, atau Anda ingin memigrasikan aplikasi dari FlexVolume ke CSI.
Prosedur:
Anda tidak dapat memount disk lintas zona. Jika Anda ingin memulihkan sumber daya di zona berbeda di klaster pemulihan, gunakan salah satu solusi berikut.
Sinkronkan data dengan mengubah sumber data.
Masuk ke Konsol ECS. Buat Snapshot untuk disk dan buat disk dari snapshot di zona baru. Untuk informasi lebih lanjut, lihat Buat Snapshot untuk Disk. Ganti ID zona di nodeAffinity dan ID disk di file YAML berikut bernama
outputfile.txt.
(Opsional) Jika klaster cadangan menggunakan FlexVolume, Anda perlu menggunakan CLI Flexvolume2CSI untuk mengonversi file YAML secara batch karena file YAML PV dan PVC yang dikelola oleh FlexVolume dan CSI berbeda. Untuk informasi lebih lanjut, lihat Gunakan CLI FlexVolume2CSI untuk Mengonversi File YAML secara Batch.
Jalankan perintah berikut untuk menggunakan Flexvolume2CSI menghasilkan file YAML yang didukung oleh CSI.
outputfile.txtadalah file YAML yang dihasilkan oleh Flexvolume2CSI.kubectl apply -f outputfile.txtJalankan perintah berikut untuk memastikan bahwa PVC di klaster pemulihan dalam status Bound:
kubectl get pvcHasil 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 di klaster pemulihan
Jika sumber daya dengan nama yang sama sudah ada di klaster pemulihan, tugas pemulihan akan melewati sumber daya tersebut.
Pusat Cadangan dikembangkan untuk mencadangkan dan memulihkan aplikasi. Sebelum menjalankan tugas pemulihan, Anda harus menginstal dan mengonfigurasi komponen sistem di klaster pemulihan. Contoh:
Komponen Penarikan Gambar Tanpa Kata Sandi Container Registry: Anda perlu memberikan izin dan mengonfigurasi acr-configuration di klaster pemulihan.
Komponen ALB Ingress: Anda perlu mengonfigurasi ALBConfig.
Perhatikan item berikut ketika Anda memulihkan Layanan:
Layanan NodePort: Secara default, port Layanan dipertahankan ketika Anda memulihkan Layanan lintas klaster.
Layanan LoadBalancer: Secara default, HealthCheckNodePort acak digunakan ketika ExternalTrafficPolicy diatur ke Local. Untuk mempertahankan port, tentukan
spec.preserveNodePorts: truesaat Anda membuat tugas pemulihan.Jika Anda memulihkan Layanan yang menggunakan instance SLB yang ada di klaster cadangan, Layanan yang dipulihkan menggunakan instance SLB yang sama dan menonaktifkan listener secara default. Anda perlu masuk ke konsol SLB untuk mengonfigurasi listener.
Layanan LoadBalancer dikelola oleh cloud controller manager (CCM) di klaster cadangan. Saat Anda memulihkan Layanan LoadBalancer, CCM secara otomatis membuat instance SLB untuk Layanan yang dipulihkan. Untuk informasi lebih lanjut, lihat Pertimbangan untuk Mengonfigurasi Layanan Tipe LoadBalancer.
Jika Anda memilih untuk mencadangkan volume, klaster pemulihan akan menggunakan sumber data yang berbeda. Gunakan convertedarg untuk mengonversi jenis volume. Sebagai contoh, Anda dapat mengonversi volume NAS menjadi volume disk. Pilih StorageClass sesuai dengan kebutuhan bisnis Anda.
Dalam contoh ini, klaster cadangan menjalankan Kubernetes 1.16 dan menggunakan FlexVolume. Volume disk dicadangkan menggunakan Cloud Backup. Dengan demikian, Anda dapat menentukan StorageClass alicloud-disk untuk PVC disk-essd, yang mengonversi volume menjadi volume disk yang dikelola oleh CSI. StorageClass default adalah alicloud-disk-topology-alltype. Jika klaster cadangan menjalankan Kubernetes 1.18 atau lebih baru dan menggunakan CSI, konversi volume disk tidak diperlukan.
Dalam contoh ini, StorageClass alibabacloud-cnfs-nas ditentukan untuk PVC pvc-nas, yang mengonversi volume NAS yang dikelola oleh FlexVolume menjadi volume NAS yang dikelola oleh CNFS. Jika StorageClass alibabacloud-cnfs-nas tidak digunakan di klaster Anda, lihat Gunakan CNFS untuk mengelola sistem file NAS (disarankan).
Prosedur:
Jalankan perintah berikut untuk membuat tugas pemulihan.
Untuk informasi lebih lanjut tentang cara mengonfigurasi tugas pemulihan di konsol, lihat Cadangkan dan Pulihkan Aplikasi di Klaster ACK. Anda dapat memodifikasi konfigurasi yang disarankan dalam langkah ini berdasarkan skenario aktual.
cat << EOF | kubectl apply -f - apiVersion: csdr.alibabacloud.com/v1beta1 kind: ApplicationRestore metadata: csdr.alibabacloud.com/backuplocations: >- '{"name":"<Nama vault cadangan>","region":"<ID Wilayah, seperti cn-beijing>","bucket":"<Nama bucket OSS yang terkait dengan vault cadangan>","provider":"alibabacloud"}' name: <Nama pemulihan> namespace: csdr spec: backupName: <Nama cadangan> 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: <namespace cadangan>: <namespace pemulihan> EOFParameter
Deskripsi
excludedNamespaces
Daftar namespace yang akan dikecualikan. Anda dapat mengecualikan namespace dalam daftar cadangan dari tugas pemulihan.
excludedResources
Daftar sumber daya yang akan dikecualikan. Anda dapat mengecualikan sumber daya dalam daftar cadangan dari tugas pemulihan.
appRestoreOnly
Tentukan apakah akan memulihkan volume dari cadangan volume.
true: Pusat cadangan membuat PV dan PVC yang diatur secara dinamis yang menunjuk ke sumber data baru. Parameter ini diatur ke true untuk tugas pemulihan yang dibuat di konsol.false: Anda perlu membuat volume yang diatur secara statis secara manual sebelum tugas pemulihan dimulai.
CatatanDalam sebagian besar kasus, atur parameter ini ke
truejika Anda ingin mengubah sumber data dan atur parameter ini kefalsejika Anda tidak mengubah sumber data.convertedarg
Daftar konversi StorageClass. Untuk volume jenis FileSystem, seperti OSS, NAS, CPFS, dan volume lokal, Anda dapat mengonfigurasi parameter ini untuk mengonversi StorageClass PVC mereka ke StorageClass yang ditentukan selama proses pemulihan. Sebagai contoh, Anda dapat mengonversi volume NAS menjadi volume disk.
convertToStorageClassType: StorageClass yang diinginkan. Pastikan bahwa StorageClass ada di klaster saat ini. Anda hanya dapat menentukan StorageClass disk atau NAS.
namespace: namespace PVC.
persistentVolumeClaim: nama PVC.
Di atas adalah parameter yang diperlukan untuk fitur konversi StorageClass.
Jalankan perintah berikut untuk memeriksa status tugas pemulihan:
kubectl -ncsdr describe applicationrestore <Nama cadangan>Jika
Phasedi kolomStatusdalam output berubah menjadiCompleted, tugas pemulihan telah dibuat.Jalankan perintah berikut untuk memeriksa apakah sumber daya gagal dipulihkan dan melihat penyebabnya:
kubectl -ncsdr get pod | grep csdr-velero kubectl -ncsdr exec -it <Nama pod csdr-velero> -- /velero describe restore <Nama pemulihan> --detailsHasil yang Diharapkan:
Peringatan: Velero: <none> Klaster: tidak dapat memulihkan, ClusterRoleBinding "kubernetes-proxy" sudah ada. Peringatan: versi dalam klaster berbeda dengan versi yang dicadangkan. Namespace: demo-ns: tidak dapat memulihkan, ConfigMap "kube-root-ca.crt" sudah ada. Peringatan: versi dalam klaster berbeda dengan versi yang dicadangkan. tidak dapat memulihkan, Endpoints "kubernetes" sudah ada. Peringatan: versi dalam klaster berbeda dengan versi yang dicadangkan. tidak dapat memulihkan, Service "kubernetes" sudah ada. Peringatan: versi dalam klaster berbeda dengan versi yang dicadangkan. Kesalahan: Velero: <none> Klaster: <none> Namespace: demo-ns: kesalahan memulihkan endpoints/xxxxxx/kubernetes: Endpoints "kubernetes" tidak valid: subsets[0].addresses[0].ip: Nilai Tidak Valid: "169.254.128.9": mungkin tidak berada dalam rentang link-local (169.xxx.0.0/16, fe80::/10) kesalahan memulihkan endpointslices.discovery.k8s.io/demo-ns/kubernetes: EndpointSlice.discovery.k8s.io "kubernetes" tidak valid: endpoints[0].addresses[0]: Nilai Tidak Valid: "169.xxx.128.9": mungkin tidak berada dalam rentang link-local (169.xxx.0.0/16, fe80::/10) kesalahan memulihkan services/xxxxxx/kubernetes-extranet: Service "kubernetes-extranet" tidak valid: spec.ports[0].nodePort: Nilai Tidak Valid: 31882: port yang diberikan sudah dialokasikanInformasi Peringatan dalam output di atas menunjukkan bahwa beberapa sumber daya dilewati oleh tugas pemulihan. Informasi Kesalahan menunjukkan bahwa penggunaan ulang NodePort gagal. Port asli dipertahankan ketika Layanan dipulihkan lintas klaster.
Periksa apakah aplikasi berjalan normal.
Setelah aplikasi dipulihkan, periksa apakah sumber daya dalam status tidak normal karena batasan bisnis, pengecualian kontainer, atau masalah lainnya. Jika ya, perbaiki masalah tersebut secara manual.
Setelah Anda memperbaiki masalah,
apiVersionaplikasi secara otomatis diatur ke apps/v1, yang disarankan untuk klaster ACK yang menjalankan Kubernetes 1.28.