All Products
Search
Document Center

Container Service for Kubernetes:Migrasi aplikasi dari kluster Kubernetes yang dikelola sendiri ke kluster ACK

Last Updated:Mar 25, 2026

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.

  • Cloud Backup telah diaktifkan.

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-secret di namespace csdr pada kluster terdaftar ACK One.

    Jalankan perintah berikut untuk memverifikasi keberadaan Secret alibaba-addon-secret:

    kubectl get secret alibaba-addon-secret -n csdr

    Output yang diharapkan:

    alibaba-addon-secret   Opaque   2      5d22h
  • Untuk kluster ACK online:

Langkah 1: Deploy aplikasi

  1. Jalankan perintah berikut untuk membuat namespace test1.

    kubectl create namespace test1
  2. Pada node yang akan dicadangkan, jalankan perintah berikut untuk membuat path mount:

    mkdir /mnt/disk
  3. Gunakan konten berikut untuk membuat file app-mysql.yaml. Ganti <YOUR-HOSTNAME> dengan hostname node yang akan dicadangkan, serta ganti username dan password dengan 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.
  4. 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.yaml

    Output yang diharapkan:

    statefulset.apps/mysql-sts created
    persistentvolume/example-pv created
    persistentvolumeclaim/example-pvc created
    secret/mysql-pass created
  5. Jalankan perintah berikut untuk memverifikasi bahwa aplikasi MySQL berhasil dideploy.

    kubectl get pod -n test1 | grep mysql-sts

    Output 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.

  1. Buat penyimpanan cadangan di dalam kluster terdaftar ACK One. Untuk informasi selengkapnya, lihat Membuat penyimpanan cadangan.

  2. Buat cadangan instan bernama MySQL di ACK One registered cluster. Untuk petunjuk selengkapnya, lihat Membuat rencana cadangan atau cadangan instan.

    Masukkan mysql untuk Name, pilih penyimpanan cadangan yang telah Anda buat pada langkah sebelumnya untuk Backup Vault, dan pilih test1 untuk Backup Namespace.

  3. 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.

  1. Buat pekerjaan pemulihan bernama mysql-restore untuk men-deploy aplikasi MySQL di namespace test2 kluster ACK online dan mengonversi penyimpanannya ke StorageClass alibabacloud-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.

  2. Klik View Restoration Records di sebelah kanan Restore. Ketika status pekerjaan mysql-restore berubah dari InProgress menjadi Completed, pemulihan selesai.

  3. Di kluster ACK, jalankan perintah berikut untuk memverifikasi bahwa aplikasi MySQL telah dideploy:

    kubectl get pod -n test2 | grep mysql-sts

    Output yang diharapkan:

    mysql-sts-0   1/1     Running   0          4s
  4. Di kluster ACK, jalankan perintah berikut untuk memverifikasi bahwa data telah dipulihkan sesuai harapan:

    1. Verifikasi bahwa penyimpanan telah dikonversi ke StorageClass alibabacloud-cnfs-nas.

      kubectl get pvc -n test2 | grep example-pvc

      Output yang diharapkan:

      example-pvc   Bound    nas-acde4acd-59b6-4332-90af-b74ef6******   25Gi       RWO            alibabacloud-cnfs-nas   31m
    2. Verifikasi bahwa klaim volume persisten example-pvc telah dipasang ke aplikasi MySQL.

      kubectl describe pvc example-pvc -n test2 | grep "Used By"

      Output yang diharapkan:

      Used By:       mysql-sts-0