All Products
Search
Document Center

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

Last Updated: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 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.

    Penting
    • Klaster 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 csdr

    Output yang diharapkan:

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

Langkah 1: Terapkan 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 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.
  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: Cadangkan 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 di langkah sebelumnya dari daftar drop-down Backup Vaults, lalu 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: 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:

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

  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