Anda dapat menggunakan Backup Center untuk mencadangkan aplikasi dan data dari kluster terdaftar ACK One, lalu memulihkannya ke kluster ACK online. Hal ini memungkinkan migrasi cepat aplikasi on-premises ke lingkungan cloud. Topik ini menjelaskan cara menggunakan Backup Center untuk memigrasikan aplikasi dari kluster eksternal yang terhubung ke kluster terdaftar ACK One ke kluster ACK online.
Prasyarat
Anda telah membuat kluster terdaftar dan menghubungkannya ke kluster di pusat data Anda. Kluster Kubernetes yang dikelola sendiri harus menggunakan versi 1.16 atau lebih baru.
Anda telah membuat kluster ACK yang dikelola untuk pemulihan. Kluster ACK yang dikelola harus berada di wilayah yang sama dengan kluster terdaftar. Disarankan menggunakan Kubernetes versi 1.18 atau lebih baru.
Penting-
Kluster pemulihan harus menggunakan plug-in penyimpanan CSI. Pemulihan aplikasi tidak didukung untuk kluster yang menggunakan plug-in penyimpanan FlexVolume atau menggunakan kedua plug-in penyimpanan CSI dan FlexVolume melalui komponen csi-compatible-controller.
-
Backup Center berfokus pada pencadangan dan pemulihan aplikasi bisnis. Sebelum menjalankan tugas pemulihan, Anda harus menginstal dan mengonfigurasi komponen sistem yang diperlukan di kluster pemulihan. Contohnya:
-
aliyun-acr-credential-helper: Anda perlu memberikan otorisasi ulang pada kluster pemulihan dan mengonfigurasi acr-configuration.
-
alb-ingress-controller: Anda perlu mengonfigurasi terlebih dahulu sumber daya seperti ALBConfig.
-
-
Kluster terdaftar ACK One dan kluster ACK telah menyelesaikan penginstalan komponen backup dan konfigurasi izin.
Untuk kluster terdaftar ACK One yang terhubung ke VPC cloud melalui metode seperti Cloud Enterprise Network (CEN), Express Connect, atau VPN, rute ke segmen jaringan internal OSS telah dikonfigurasi. Untuk informasi selengkapnya, lihat Akses OSS menggunakan endpoints dan nama domain bucket.
Kasus penggunaan
Cloud Backup untuk pemulihan bencana: Fitur ini menyediakan solusi terpadu untuk pencadangan, pemulihan bencana, dan migrasi, membantu Anda memigrasikan aplikasi ke cloud dengan cepat serta memastikan kelangsungan bisnis. Untuk informasi selengkapnya, lihat Ikhtisar kluster terdaftar.
Catatan penggunaan
Saat mencadangkan data dari kluster eksternal, Anda harus memasang volume lokal menggunakan PV dan PVC. Plugin CSI Alibaba Cloud mendukung pemasangan pada kluster terdaftar ACK One. Untuk informasi selengkapnya, lihat Volume penyimpanan lokal.
Kluster terdaftar ACK One, kluster ACK online, dan Bucket OSS harus berada di wilayah yang sama.
Sebelum memulai
Topik ini menggunakan aplikasi MySQL sebagai contoh untuk menjelaskan cara men-deploy dan mencadangkan aplikasi di kluster eksternal, lalu memulihkannya di kluster ACK. Sebelum memigrasikan aplikasi, pastikan bahwa kluster terdaftar ACK One dan kluster ACK berada di wilayah yang sama, telah mengaktifkan backup kluster, dan memenuhi kondisi berikut.
Kluster terdaftar ACK One: Pastikan Anda telah membuat Pengguna RAM dan memberikan izin terhadap OSS dan Cloud Backup. Gunakan ID AccessKey dan AccessKey Secret Pengguna RAM tersebut untuk membuat resource Secret bernama
alibaba-addon-secretdi namespace csdr pada kluster terdaftar ACK One.Jalankan perintah berikut untuk memverifikasi keberadaan Secret
alibaba-addon-secret:kubectl get secret alibaba-addon-secret -n csdrOutput yang diharapkan:
alibaba-addon-secret Opaque 2 5d22hUntuk kluster ACK online:
Untuk kluster ACK yang dikelola, pastikan layanan Cloud Backup telah diaktifkan dan bucket bernama cnfs-oss-**** telah dibuat.
Untuk klaster khusus ACK, pastikan Peran RAM Worker memiliki izin OSS dan Cloud Backup. Untuk informasi selengkapnya, lihat Konfigurasi izin OSS untuk klaster khusus dan Konfigurasi izin Cloud Backup untuk pengguna klaster khusus atau terdaftar.
Langkah 1: Deploy aplikasi
Jalankan perintah berikut untuk membuat namespace
test1.kubectl create namespace test1Pada node yang akan dicadangkan, jalankan perintah berikut untuk membuat path mount:
mkdir /mnt/diskGunakan konten berikut untuk membuat file app-mysql.yaml. Ganti
<YOUR-HOSTNAME>dengan hostname node yang akan dicadangkan, serta gantiusernamedanpassworddengan username dan password aktual untuk aplikasi cadangan.apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql-sts namespace: test1 spec: selector: matchLabels: app: mysql-sts serviceName: mysql-sts template: metadata: labels: app: mysql-sts spec: containers: - name: mysql-sts image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 3306 name: mysql-sts volumeMounts: - name: mysql mountPath: /var/lib/mysql volumes: - name: mysql persistentVolumeClaim: claimName: example-pvc --- apiVersion: v1 kind: PersistentVolume metadata: name: example-pv spec: capacity: storage: 100Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage local: path: /mnt/disk nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - <YOUR-HOSTNAME> # Nama node yang akan dicadangkan. --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: example-pvc namespace: test1 spec: accessModes: - ReadWriteOnce resources: requests: storage: 25Gi storageClassName: local-storage volumeName: example-pv --- apiVersion: v1 kind: Secret metadata: name: mysql-pass namespace: test1 type: Opaque data: username: dGVz**** # Username untuk aplikasi MySQL yang akan dicadangkan. Ganti dengan username aktual aplikasi. password: dGVzdDEt**** # Password untuk aplikasi MySQL yang akan dicadangkan. Ganti dengan password aktual aplikasi.Jalankan perintah berikut untuk men-deploy aplikasi MySQL, memasang disk lokal sebagai PersistentVolume (PV), dan mengonfigurasi PV serta PersistentVolumeClaim (PVC) terkait.
kubectl create -f app-mysql.yamlOutput yang diharapkan:
statefulset.apps/mysql-sts created persistentvolume/example-pv created persistentvolumeclaim/example-pvc created secret/mysql-pass createdJalankan perintah berikut untuk memverifikasi bahwa aplikasi MySQL berhasil dideploy.
kubectl get pod -n test1 | grep mysql-stsOutput yang diharapkan:
mysql-sts-0 1/1 Running 1 (4m51s ago) 4m58s
Langkah 2: Cadangkan aplikasi dan data MySQL
Kluster terdaftar ACK One terhubung ke kluster eksternal, dan Anda dapat menjalankan tugas pencadangan di kluster terdaftar ACK One.
Buat penyimpanan cadangan di dalam kluster terdaftar ACK One. Untuk informasi selengkapnya, lihat Membuat penyimpanan cadangan.
Buat cadangan instan bernama
MySQLdi ACK One registered cluster. Untuk petunjuk selengkapnya, lihat Membuat rencana cadangan atau cadangan instan.Masukkan
mysqluntuk Name, pilih penyimpanan cadangan yang telah Anda buat pada langkah sebelumnya untuk Backup Vault, dan pilih test1 untuk Backup Namespace.Pada halaman Application Backup, klik tab Backup Records dan periksa status pekerjaan
mysql-backup. Ketika status berubah dari InProgress menjadi Completed, pencadangan selesai.
Langkah 3: Pulihkan aplikasi ke kluster ACK
Bagian ini menunjukkan cara memulihkan aplikasi MySQL ke kluster ACK online dan mengonversi penyimpanannya ke StorageClass alibabacloud-cnfs-nas.
Buat pekerjaan pemulihan bernama
mysql-restoreuntuk men-deploy aplikasi MySQL di namespacetest2kluster ACK online dan mengonversi penyimpanannya ke StorageClassalibabacloud-cnfs-nas. Untuk informasi selengkapnya, lihat Pulihkan aplikasi dan volume.Parameter
Contoh
Name
mysql-restore
Backup vaults
Pilih penyimpanan cadangan yang telah Anda buat. Jika tombol Initialize Backup Vault muncul, klik tombol tersebut dan tunggu hingga catatan cadangan tersinkronisasi.
Select backup
mysql
Reset namespace
Dari test1 ke test2.
StorageClass conversion
Pada daftar PVC yang dikonversi, untuk example-pvc, pilih alibabacloud-cnfs-nas. sebagai StorageClass.
Klik View Restoration Records di sebelah kanan Restore. Ketika status pekerjaan
mysql-restoreberubah dari InProgress menjadi Completed, pemulihan selesai.Di kluster ACK, jalankan perintah berikut untuk memverifikasi bahwa aplikasi MySQL telah dideploy:
kubectl get pod -n test2 | grep mysql-stsOutput yang diharapkan:
mysql-sts-0 1/1 Running 0 4sDi kluster ACK, jalankan perintah berikut untuk memverifikasi bahwa data telah dipulihkan sesuai harapan:
Verifikasi bahwa penyimpanan telah dikonversi ke StorageClass
alibabacloud-cnfs-nas.kubectl get pvc -n test2 | grep example-pvcOutput yang diharapkan:
example-pvc Bound nas-acde4acd-59b6-4332-90af-b74ef6****** 25Gi RWO alibabacloud-cnfs-nas 31mVerifikasi bahwa klaim volume persisten
example-pvctelah dipasang ke aplikasi MySQL.kubectl describe pvc example-pvc -n test2 | grep "Used By"Output yang diharapkan:
Used By: mysql-sts-0