Anda dapat menggunakan Backup Center untuk mencadangkan aplikasi dan data yang dideploy di ACK One registered cluster, lalu memulihkannya ke kluster ACK online guna memigrasikan aplikasi offline ke lingkungan online secara cepat. Topik ini menjelaskan cara menggunakan Backup Center untuk memigrasikan aplikasi dari kluster offline yang terhubung ke ACK One registered cluster ke kluster ACK online.
Prasyarat
ACK One registered cluster telah dibuat dan terhubung ke kluster pusat data lokal. Kluster Kubernetes yang dikelola sendiri harus menggunakan versi 1.16 atau lebih baru.
Kluster ACK yang dikelola telah dibuat sebagai kluster pemulihan. Kluster pemulihan harus berada di wilayah yang sama dengan kluster terdaftar. Disarankan menggunakan Kubernetes versi 1.18 atau lebih baru.
PentingKluster tujuan harus menggunakan plugin penyimpanan Container Storage Interface (CSI). Anda tidak dapat memulihkan data ke kluster yang menggunakan plugin penyimpanan FlexVolume atau kluster yang menggunakan kedua plugin CSI dan FlexVolume melalui komponen csi-compatible-controller.
Backup Center berfokus pada pencadangan dan pemulihan aplikasi bisnis. Sebelum memulai pekerjaan pemulihan, Anda harus menginstal dan mengonfigurasi komponen sistem yang diperlukan di kluster tujuan. Contohnya:
Komponen ACR tanpa kata sandi: Anda harus memberikan izin dan mengonfigurasi acr-configuration untuk kluster tujuan.
Komponen ALB Ingress: Anda harus mengonfigurasi ALBConfig dan pengaturan lainnya terlebih dahulu.
Pastikan bahwa baik ACK One registered cluster maupun kluster ACK telah menginstal komponen layanan backup dan mengonfigurasi izin.
Untuk ACK One registered cluster yang terhubung ke Virtual Private Cloud (VPC) melalui Cloud Enterprise Network (CEN), Express Connect, atau gateway VPN, pastikan Anda telah mengonfigurasi entri rute ke titik akhir internal Object Storage Service (OSS). Untuk informasi selengkapnya, lihat Akses OSS melalui titik akhir internal dan nama domain bucket.
Skenario
Pencadangan cloud dan pemulihan bencana: solusi terintegrasi untuk pencadangan, pemulihan bencana, dan migrasi yang membantu Anda dengan cepat memigrasikan aplikasi ke cloud dan menerapkan pemulihan bencana data. Untuk informasi selengkapnya, lihat Ikhtisar kluster terdaftar.
Catatan
Saat mencadangkan data dari kluster eksternal, Anda harus memasang volume lokal sebagai PV dan PVC. Plugin CSI Alibaba Cloud mendukung pemasangan volume pada ACK One registered cluster. Untuk informasi selengkapnya, lihat Local volumes.
ACK One registered cluster, kluster ACK, dan bucket OSS harus berada di wilayah yang sama.
Persiapan
Topik ini menggunakan aplikasi MySQL sebagai contoh untuk menjelaskan cara men-deploy dan mencadangkan aplikasi di kluster eksternal, lalu memulihkannya ke kluster ACK. Sebelum memigrasikan aplikasi, pastikan bahwa ACK One registered cluster dan kluster ACK berada di wilayah yang sama, fitur backup kluster diaktifkan untuk kedua kluster tersebut, dan persyaratan berikut terpenuhi:
Untuk kluster terdaftar ACK One: Buat Pengguna RAM dan berikan izinnya pada OSS dan Cloud Backup. Kemudian, gunakan ID AccessKey dan Rahasia AccessKey Pengguna RAM untuk membuat rahasia bernama
alibaba-addon-secretdicsdrnamespace kluster terdaftar ACK One.Jalankan perintah berikut untuk memeriksa apakah Secret
alibaba-addon-secretsudah ada.kubectl get secret alibaba-addon-secret -n csdrOutput yang diharapkan:
alibaba-addon-secret Opaque 2 5d22hUntuk kluster ACK:
Jika Anda menggunakan Kluster ACK yang dikelola, pastikan bahwa layanan Cloud Backup diaktifkan dan bucket yang namanya diawali dengan
cnfs-oss-****dibuat.Jika Anda menggunakan Cluster khusus ACK, pastikan bahwa peran RAM pekerja memiliki izin untuk mengakses OSS dan Cloud Backup. Untuk informasi selengkapnya, lihat Berikan izin OSS ke Cluster khusus ACK dan Berikan izin Cloud Backup ke Cluster khusus ACK atau kluster terdaftar.
Langkah 1: Deploy aplikasi di kluster eksternal
Jalankan perintah berikut untuk membuat namespace
test1:kubectl create namespace test1Pada node yang ingin Anda cadangkan, jalankan perintah berikut untuk membuat path mount:
mkdir /mnt/diskBuat file bernama app-mysql.yaml dengan konten berikut. Ganti
<YOUR-HOSTNAME>dengan nama node yang ingin Anda cadangkan. Ganti nilaiusernamedanpassworddengan username dan password aplikasi MySQL yang telah dienkripsi Base64.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 aplikasi MySQL yang akan dicadangkan dalam format Base64. Ganti nilai ini dengan username sebenarnya. password: dGVzdDEt**** # Password aplikasi MySQL yang akan dicadangkan dalam format Base64. Ganti nilai ini dengan password sebenarnya.Jalankan perintah berikut untuk men-deploy aplikasi MySQL, memasang disk lokal sebagai PV, serta membuat PV dan 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 memeriksa apakah aplikasi MySQL telah 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
Kluster eksternal terhubung ke ACK One registered cluster. Anda dapat menjalankan tugas pencadangan di ACK One registered cluster.
Buat penyimpanan cadangan di ACK One registered cluster. Untuk informasi selengkapnya, lihat Buat penyimpanan cadangan.
Buat cadangan instan bernama
mysqldi kluster terdaftar ACK One. Untuk informasi selengkapnya, lihat Membuat rencana cadangan atau cadangan instan.Atur Name menjadi
mysql. Untuk Backup Vaults, pilih vault dari langkah sebelumnya. Untuk Backup Namespaces, pilih test1.Pada halaman Application Backup, klik tab Backup Records untuk melihat status tugas
mysql-backup. Saat status berubah dari InProgress menjadi Completed, pencadangan telah selesai.
Langkah 3: Pulihkan aplikasi di kluster ACK
Bagian ini menunjukkan cara memulihkan aplikasi MySQL di kluster ACK dan mengonversi penyimpanannya ke StorageClass alibabacloud-cnfs-nas. Ikuti langkah-langkah berikut:
Buat tugas pemulihan bernama
mysql-restoreuntuk men-deploy aplikasi MySQL ke namespacetest2pada kluster ACK dan mengonversi StorageClass-nya menjadialibabacloud-cnfs-nas. Untuk informasi selengkapnya, lihat Pulihkan aplikasi dan volume data.Parameter
Nilai
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 backup tersinkronisasi ke kluster.
Select Backup
mysql
Reset Namespace
Petakan ulang namespace dari test1 ke test2.
StorageClass Conversion
Pada daftar PVC yang akan dikonversi, pilih StorageClass alibabacloud-cnfs-nas untuk example-pvc.
Di sebelah kanan Restore, klik View Restoration Records. Pemulihan selesai saat status tugas berubah dari InProgress menjadi Completed.
Jalankan perintah berikut di kluster ACK untuk memverifikasi bahwa aplikasi MySQL telah dideploy:
kubectl get pod -n test2 | grep mysql-stsOutput yang diharapkan:
mysql-sts-0 1/1 Running 0 4sJalankan perintah berikut di kluster ACK untuk memverifikasi bahwa data telah dipulihkan:
Verifikasi bahwa data telah dipulihkan 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
example-pvctelah dimount ke aplikasi MySQL.kubectl describe pvc example-pvc -n test2 | grep "Used By"Output yang diharapkan:
Used By: mysql-sts-0