すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:自己管理型 Kubernetes クラスターから ACK クラスターへのアプリケーション移行

最終更新日:May 19, 2026

バックアップセンターを使用して、ACK One 登録済みクラスターにデプロイされているアプリケーションとデータをバックアップし、オンラインの ACK クラスターに復元することで、オフライン環境のアプリケーションを迅速にオンライン環境へ移行できます。本トピックでは、ACK One 登録済みクラスターに接続されたオフラインクラスターから、オンラインの ACK クラスターへアプリケーションを移行する方法について説明します。

前提条件

利用シーン

クラウドバックアップとディザスタリカバリ:バックアップ、ディザスタリカバリ、移行を統合したソリューションにより、アプリケーションをクラウドへ迅速に移行し、データのディザスタリカバリを実現できます。詳細については、「登録済みクラスターの概要」をご参照ください。

注意事項

  • 外部クラスターからデータをバックアップする際は、ローカルボリュームを PV および PVC としてマウントする必要があります。Alibaba Cloud CSI プラグインはACK One 登録済みクラスター上でボリュームのマウントをサポートしています。詳細については、「ローカルボリューム」をご参照ください。

  • ACK One 登録済みクラスター、ACK クラスター、および OSS バケットは同じリージョン内にある必要があります。

事前準備

本トピックでは MySQL アプリケーションを例に、外部クラスターへのアプリケーションのデプロイおよびバックアップ、その後の ACK クラスターへの復元方法を説明します。アプリケーションを移行する前に、ACK One 登録済みクラスターおよび ACK クラスターが同じリージョン内にあり、両クラスターでクラスターバックアップ機能が有効になっており、以下の要件を満たしていることを確認してください。

  • ACK One 登録済みクラスターについて:RAM ユーザーを作成し、OSS およびCloud Backup に対する権限を付与します。その後、その RAM ユーザーの AccessKey ID および AccessKey Secret を使用して、ACK One 登録済みクラスターcsdr 名前空間内に alibaba-addon-secret という名前のシークレットを作成します。

    次のコマンドを実行して、alibaba-addon-secret シークレットが存在するか確認します。

    kubectl get secret alibaba-addon-secret -n csdr

    期待される出力:

    alibaba-addon-secret   Opaque   2      5d22h
  • ACK クラスターについて:

ステップ 1:外部クラスターへのアプリケーションデプロイ

  1. 次のコマンドを実行して、test1 名前空間を作成します。

    kubectl create namespace test1
  2. バックアップ対象のノード上で、次のコマンドを実行してマウントパスを作成します。

    mkdir /mnt/disk
  3. app-mysql.yaml という名前のファイルを作成し、以下の内容を記述します。 <YOUR-HOSTNAME> はバックアップ対象のノード名に置き換えます。username および password の値は、MySQL アプリケーションのユーザー名およびパスワードを 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> # The name of the node to back up.
    ---
    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****             # The Base64-encoded username of the MySQL application to be backed up. Replace the value with the actual username.
      password: dGVzdDEt****     # The Base64-encoded password of the MySQL application to be backed up. Replace the value with the actual password.
  4. 次のコマンドを実行して、MySQL アプリケーションをデプロイし、ローカルディスクを PV としてマウントし、関連する PV および PVC を作成します。

    kubectl create -f app-mysql.yaml

    期待される出力:

    statefulset.apps/mysql-sts created
    persistentvolume/example-pv created
    persistentvolumeclaim/example-pvc created
    secret/mysql-pass created
  5. 次のコマンドを実行して、MySQL アプリケーションが正常にデプロイされたか確認します。

    kubectl get pod -n test1 | grep mysql-sts

    期待される出力:

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

ステップ 2:アプリケーションとデータのバックアップ

外部クラスターはACK One 登録済みクラスターに接続されています。ACK One 登録済みクラスター上でバックアップタスクを実行できます。

  1. ACK One 登録済みクラスター内にバックアップボールトを作成します。詳細については、「バックアップボールトの作成」をご参照ください。

  2. ACK One 登録済みクラスターで、名前を mysql とするインスタントバックアップを作成します。詳細については、「バックアッププランまたはインスタントバックアップを作成する」をご参照ください。

    名前mysql を指定します。バックアップボールトには、前のステップで作成したボールトを選択します。バックアップの名前空間には test1 を選択します。

  3. アプリケーションのバックアップページで、バックアップ履歴タブをクリックし、mysql-backup タスクのステータスを確認します。ステータスが InProgress から Completed に変化すると、バックアップが完了します。

ステップ 3:ACK クラスターへのアプリケーション復元

このセクションでは、ACK クラスターへの MySQL アプリケーションの復元方法と、そのストレージを alibabacloud-cnfs-nas StorageClass に変換する手順を説明します。

  1. mysql-restore という名前の復元タスクを作成し、MySQL アプリケーションを ACK クラスターの test2 名前空間にデプロイし、StorageClass を alibabacloud-cnfs-nas に変換します。詳細については、「アプリケーションとデータボリュームの復元」をご参照ください。

    パラメーター

    名前

    mysql-restore

    バックアップボールト

    作成したバックアップボールトを選択します。リポジトリの初期化ボタンが表示された場合は、クリックしてバックアップレコードがクラスターに同期されるまで待ちます。

    バックアップを選択

    mysql

    名前空間のリセット

    test1 から test2 へ名前空間を再マッピングします。

    ストレージタイプの変換

    変換対象の PVC リストで、example-pvc に対して alibabacloud-cnfs-nas StorageClass を選択します。

  2. 今すぐ復元するの右側にある復元履歴の表示をクリックします。タスクのステータスが InProgress から Completed に変化すると、復元が完了します。

  3. ACK クラスター内で次のコマンドを実行し、MySQL アプリケーションが正常にデプロイされたか確認します。

    kubectl get pod -n test2 | grep mysql-sts

    期待される出力:

    mysql-sts-0   1/1     Running   0          4s
  4. ACK クラスター内で次のコマンドを実行し、データが正常に復元されたか確認します。

    1. データが alibabacloud-cnfs-nas StorageClass に復元されたことを確認します。

      kubectl get pvc -n test2 | grep example-pvc

      期待される出力:

      example-pvc   Bound    nas-acde4acd-59b6-4332-90af-b74ef6******   25Gi       RWO            alibabacloud-cnfs-nas   31m
    2. example-pvc が MySQL アプリケーションにマウントされていることを確認します。

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

      期待される出力:

      Used By:       mysql-sts-0