All Products
Search
Document Center

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

Last Updated:May 20, 2026

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.

    Penting
    • Kluster 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.

  • Layanan Cloud Backup telah diaktifkan.

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

    Jalankan perintah berikut untuk memeriksa apakah Secret alibaba-addon-secret sudah ada.

    kubectl get secret alibaba-addon-secret -n csdr

    Output yang diharapkan:

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

Langkah 1: Deploy aplikasi di kluster eksternal

  1. Jalankan perintah berikut untuk membuat namespace test1:

    kubectl create namespace test1
  2. Pada node yang ingin Anda cadangkan, jalankan perintah berikut untuk membuat path mount:

    mkdir /mnt/disk
  3. Buat file bernama app-mysql.yaml dengan konten berikut. Ganti <YOUR-HOSTNAME> dengan nama node yang ingin Anda cadangkan. Ganti nilai username dan password dengan 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.
  4. Jalankan perintah berikut untuk men-deploy aplikasi MySQL, memasang disk lokal sebagai PV, serta membuat PV dan 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 memeriksa apakah aplikasi MySQL telah 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

Kluster eksternal terhubung ke ACK One registered cluster. Anda dapat menjalankan tugas pencadangan di ACK One registered cluster.

  1. Buat penyimpanan cadangan di ACK One registered cluster. Untuk informasi selengkapnya, lihat Buat penyimpanan cadangan.

  2. Buat cadangan instan bernama mysql di 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.

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

  1. Buat tugas pemulihan bernama mysql-restore untuk men-deploy aplikasi MySQL ke namespace test2 pada kluster ACK dan mengonversi StorageClass-nya menjadi alibabacloud-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.

  2. Di sebelah kanan Restore, klik View Restoration Records. Pemulihan selesai saat status tugas berubah dari InProgress menjadi Completed.

  3. Jalankan perintah berikut di kluster ACK 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. Jalankan perintah berikut di kluster ACK untuk memverifikasi bahwa data telah dipulihkan:

    1. Verifikasi bahwa data telah dipulihkan 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 example-pvc telah dimount ke aplikasi MySQL.

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

      Output yang diharapkan:

      Used By:       mysql-sts-0