Setelah mendaftarkan klaster Kubernetes eksternal ke Container Service for Kubernetes (ACK), Anda dapat menggunakan pusat cadangan ACK untuk mencadangkan aplikasi dan data dalam klaster tersebut serta memulihkan file cadangan di klaster ACK. Topik ini menjelaskan cara menggunakan pusat cadangan ACK untuk memigrasikan aplikasi dari klaster Kubernetes eksternal ke klaster ACK.
Prasyarat
Klaster terdaftar telah dibuat dan klaster eksternal dengan versi Kubernetes lebih baru dari 1.16 telah didaftarkan ke ACK menggunakan klaster terdaftar. Untuk informasi lebih lanjut, lihat Buat klaster terdaftar ACK One.
Klaster ACK yang digunakan untuk pemulihan diterapkan di wilayah yang sama dengan klaster terdaftar, dan versi Kubernetes klaster tersebut adalah 1.18 atau lebih baru. Untuk informasi lebih lanjut, lihat Buat klaster ACK yang dikelola dan Buat klaster ACK khusus.
PentingKlaster pemulihan harus menggunakan Plugin Container Storage Interface (CSI). Pemulihan aplikasi tidak didukung di klaster yang menggunakan FlexVolume atau 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 klaster pemulihan. Contoh:
aliyun-acr-credential-helper: Berikan izin kepada klaster pemulihan dan konfigurasikan acr-configuration.
alb-ingress-controller: Konfigurasikan ALBConfig.
Fitur pencadangan klaster diaktifkan untuk klaster terdaftar dan klaster ACK yang Anda buat. Untuk informasi lebih lanjut, lihat Instal migrate-controller dan berikan izin.
Rute dikonfigurasi yang menunjuk ke jaringan internal wilayah tempat Bucket OSS untuk klaster terdaftar berada jika klaster terhubung ke virtual private cloud (VPC) menggunakan Cloud Enterprise Network (CEN), Express Connect, atau koneksi VPN. Untuk informasi lebih lanjut, lihat Titik akhir OSS internal dan rentang VIP.
Cloud Backup telah diaktifkan. Untuk informasi lebih lanjut, lihat Cloud Backup.
Skenario
Cloud Backup untuk pemulihan bencana: solusi pencadangan, pemulihan bencana, dan migrasi terintegrasi untuk memungkinkan migrasi aplikasi ke cloud dan pemulihan data bencana dengan cepat. Untuk informasi lebih lanjut, lihat Ikhtisar klaster terdaftar.
Catatan penggunaan
Sebelum mencadangkan data di klaster eksternal, buat volume persisten (PV) dan klaim volume persisten (PVC) untuk memasang volume lokal ke klaster. Plugin Container Storage Interface (CSI) yang disediakan oleh Alibaba Cloud memungkinkan Anda memasang volume ke klaster terdaftar. Untuk informasi lebih lanjut, lihat Volume penyimpanan lokal.
Klaster terdaftar, klaster ACK, dan Bucket OSS harus diterapkan di wilayah yang sama.
Sebelum Anda mulai
Dalam contoh ini, aplikasi MySQL yang berjalan di klaster eksternal dicadangkan dan kemudian file cadangan dipulihkan di klaster ACK. Sebelum memigrasikan aplikasi, pastikan bahwa klaster terdaftar dan klaster ACK diterapkan di wilayah yang sama dan keduanya memiliki fitur pencadangan klaster yang diaktifkan. Pastikan juga kondisi berikut terpenuhi:
Klaster terdaftar: Pengguna Resource Access Management (RAM) dibuat dan diberikan izin untuk mengakses OSS dan Cloud Backup. Secret bernama alibaba-addon-secret dibuat di namespace csdr klaster terdaftar untuk menyimpan ID AccessKey dan Rahasia AccessKey pengguna RAM.
Jalankan perintah berikut untuk memeriksa apakah Secret alibaba-addon-secret ada:
kubectl get secret alibaba-addon-secret -n csdrOutput yang diharapkan:
alibaba-addon-secret Opaque 2 5d22hKlaster ACK:
Jika menggunakan klaster ACK yang dikelola, pastikan bahwa Cloud Backup telah diaktifkan dan Bucket OSS bernama cnfs-oss-**** dibuat.
Jika menggunakan klaster ACK khusus, pastikan bahwa Peran RAM pekerja klaster memiliki izin untuk mengakses OSS dan Cloud Backup. Untuk informasi lebih lanjut, lihat Berikan izin OSS ke klaster ACK khusus dan Berikan izin Cloud Backup ke klaster ACK khusus atau klaster terdaftar.
Langkah 1: Terapkan aplikasi di klaster eksternal
Jalankan perintah berikut untuk membuat namespace bernama test1:
kubectl create namespace test1Buat file bernama app-mysql.yaml dan tambahkan konten berikut ke file tersebut.
Ganti
<your-hostname>dengan nama node yang ingin Anda cadangkan. Atur parameterusernamedanpasswordke nama pengguna dan kata sandi yang digunakan untuk masuk ke aplikasi.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: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 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> # Tentukan nama node yang ingin Anda cadangkan. --- 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**** # Ganti nilainya dengan nama pengguna yang digunakan untuk masuk ke aplikasi MySQL yang ingin Anda cadangkan. password: dGVzdDEt**** # Ganti nilainya dengan kata sandi yang digunakan untuk masuk ke aplikasi MySQL yang ingin Anda cadangkan.Jalankan perintah berikut untuk membuat aplikasi MySQL, PV, dan PVC. PV dan PVC digunakan untuk memasang disk lokal ke aplikasi MySQL.
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 dibuat:
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 di klaster eksternal
Anda dapat mendaftarkan klaster eksternal ke ACK dan kemudian melakukan operasi pencadangan di klaster terdaftar.
Buat brankas cadangan di klaster terdaftar. Untuk informasi lebih lanjut, lihat Buat brankas cadangan.
Buat tugas pencadangan real-time bernama MySQL di klaster terdaftar. Untuk informasi lebih lanjut, lihat Buat rencana cadangan atau cadangkan secara instan.
Atur Name menjadi MySQL, pilih brankas cadangan yang Anda buat di langkah sebelumnya dari daftar drop-down Backup Vaults, lalu pilih test1 dari daftar drop-down Backup Namespaces.
Di halaman Application Backup, klik tab Backup Records. Jika status tugas mysql-backup berubah dari InProgress menjadi Completed, data telah dicadangkan.
Langkah 3: Pulihkan file cadangan di klaster ACK
Dalam contoh ini, StorageClass klaster eksternal dikonversi menjadi alibabacloud-cnfs-nas. Contoh ini menunjukkan cara memulihkan file cadangan aplikasi MySQL di klaster ACK. Lakukan langkah-langkah berikut:
Buat tugas pemulihan bernama mysql-restore untuk menerapkan aplikasi MySQL di namespace test2 klaster ACK dan mengonversi StorageClass-nya menjadi alibabacloud-cnfs-nas. Untuk informasi lebih lanjut, lihat Pulihkan aplikasi dan volume.
Parameter
Contoh
Name
mysql-restore.
Backup Vaults
Pilih brankas cadangan yang Anda buat. Setelah Anda memilih brankas cadangan, klik Initialize Backup Vault untuk mengaitkan klaster pemulihan dengan brankas cadangan.
Select Backup
Pilih MySQL.
Reset Namespace
Ubah dari test1 menjadi test2.
StorageClass Conversion
Pilih StorageClass alibabacloud-cnfs-nas untuk PVC example-pvc dalam daftar PVC yang dikonversi.
Klik View Restoration Records di sisi kanan Restore. Jika status tugas pemulihan mysql-restore berubah dari InProgress menjadi Completed, aplikasi dan data MySQL telah dipulihkan.
Jalankan perintah berikut di klaster ACK untuk memeriksa apakah aplikasi MySQL telah diterapkan:
kubectl get pod -n test2 | grep mysql-stsOutput yang diharapkan:
mysql-sts-0 1/1 Running 0 4sJalankan perintah berikut di klaster ACK untuk memeriksa apakah data telah dipulihkan:
Periksa apakah StorageClass PVC telah diubah menjadi alibaba-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 31mPeriksa apakah PVC example-pvc dipasang ke aplikasi MySQL:
kubectl describe pvc example-pvc -n test2 | grep "Used By"Output yang diharapkan:
Used By: mysql-sts-0