全部产品
Search
文档中心

Container Service for Kubernetes:Migrasi aplikasi dari klaster Kubernetes eksternal ke klaster ACK

更新时间:Jul 02, 2025

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 klaster terdaftar.

  • Klaster ACK dikelola telah dibuat di wilayah yang sama dengan klaster terdaftar untuk pemulihan aplikasi. Disarankan menggunakan Kubernetes 1.18 atau yang lebih baru.

    Penting
    • Klaster pemulihan harus menggunakan plug-in 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, instal dan konfigurasikan komponen sistem di klaster pemulihan. Contoh:

      • aliyun-acr-credential-helper: Berikan izin kepada klaster pemulihan dan konfigurasikan acr-configuration.

      • alb-ingress-controller: Konfigurasikan ALBConfig.

  • Komponen cadangan migrate-controller telah diinstal dan diberikan izin untuk klaster terdaftar dan klaster ACK yang Anda buat.

  • Rute dikonfigurasi yang menunjuk ke jaringan internal wilayah tempat Bucket Object Storage Service (OSS) untuk klaster terdaftar berada jika klaster tersebut 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.

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. Plug-in 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 berada 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 klaster terdaftar dan klaster ACK berada di wilayah yang sama dan keduanya memiliki fitur pencadangan klaster diaktifkan. Pastikan juga kondisi berikut terpenuhi:

  • Klaster terdaftar: Pengguna Resource Access Management (RAM) telah 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 dari pengguna RAM.

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

    kubectl get secret alibaba-addon-secret -n csdr

    Output yang diharapkan:

    alibaba-addon-secret   Opaque   2      5d22h
  • Klaster ACK:

Langkah 1: Menyebarkan aplikasi di klaster eksternal

  1. Jalankan perintah berikut untuk membuat namespace bernama test1:

    kubectl create namespace test1
  2. Buat file bernama app-mysql.yaml dan tambahkan konten berikut ke file tersebut.

    Ganti <your-hostname> dengan nama node yang ingin Anda cadangkan. Atur parameter username dan password ke username dan password 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: 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> # 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 username yang digunakan untuk masuk ke aplikasi MySQL yang ingin Anda cadangkan.
      password: dGVzdDEt****     # Ganti nilainya dengan password yang digunakan untuk masuk ke aplikasi MySQL yang ingin Anda cadangkan.
  3. 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.yaml

    Output yang diharapkan:

    statefulset.apps/mysql-sts created
    persistentvolume/example-pv created
    persistentvolumeclaim/example-pvc created
    secret/mysql-pass created
  4. Jalankan perintah berikut untuk memeriksa apakah aplikasi MySQL telah dibuat:

    kubectl get pod -n test1 | grep mysql-sts

    Output yang diharapkan:

    mysql-sts-0   1/1     Running   1 (4m51s ago)   4m58s

Langkah 2: Mencadangkan aplikasi dan data MySQL di klaster eksternal

Anda dapat mendaftarkan klaster eksternal ke ACK dan kemudian melakukan operasi pencadangan di klaster terdaftar.

  1. Buat brankas cadangan di klaster terdaftar. Untuk informasi lebih lanjut, lihat Buat brankas cadangan.

  2. 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 pada langkah sebelumnya dari daftar drop-down Backup Vaults, dan kemudian pilih test1 dari daftar drop-down Backup Namespaces.

  3. Di halaman Application Backup, klik tab Backup Records. Jika status tugas mysql-backup berubah dari InProgress menjadi Completed, data telah dicadangkan.

Langkah 3: Memulihkan file cadangan di klaster ACK

Dalam contoh ini, StorageClass klaster eksternal diubah menjadi alibabacloud-cnfs-nas. Contoh ini menunjukkan cara memulihkan file cadangan aplikasi MySQL di klaster ACK. Lakukan langkah-langkah berikut:

  1. Buat tugas pemulihan bernama mysql-restore untuk menyebarkan aplikasi MySQL di namespace test2 klaster ACK dan mengubah 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.

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

  3. Jalankan perintah berikut di klaster ACK untuk memeriksa apakah aplikasi MySQL telah diterapkan:

    kubectl get pod -n test2 | grep mysql-sts

    Output yang diharapkan:

    mysql-sts-0   1/1     Running   0          4s
  4. Jalankan perintah berikut di klaster ACK untuk memeriksa apakah data telah dipulihkan:

    1. Periksa apakah StorageClass PVC telah diubah menjadi alibaba-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. Periksa 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