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

Container Service for Kubernetes:サードパーティの Kubernetes クラスターから ACK へのアプリケーション移行

最終更新日:Jun 24, 2026

ACK One の登録済みクラスターにサードパーティの Kubernetes クラスターを接続した後、Cloud Backup を介してアプリケーションとボリュームをバックアップし、Container Service for Kubernetes (ACK) クラスターで復元することで、クラウド間の移行を実現します。

この例では、MySQL アプリケーションをエンドツーエンドで移行します。

制限事項

移行を開始する前に、これらの制約を確認してください。移行中に違反があると、処理がブロックされます。

  • 復元先クラスターには CSI プラグインが必須です。 FlexVolume を使用しているクラスター、または FlexVolume と共に csi-compatible-controller を使用しているクラスターは、復元をサポートしていません。

  • Kubernetes バージョンの要件。 ソースクラスター:Kubernetes 1.16 以降。ACK 復元先クラスター:Kubernetes 1.18 以降。

  • バックアップボールトの関連付けは 1 回のみ。 各バックアップボールトは、復元先クラスターに 1 回しか関連付けることができません。

警告

登録済みクラスター、ACK クラスター、および OSS バケットは、同じリージョンに存在する必要があります。リージョンをまたいで配置すると、バックアップと復元が失敗します。

仕組み

  1. サードパーティの Kubernetes クラスターを ACK One の登録済みクラスターに接続します。

  2. Cloud Backup を介して、アプリケーションとそのボリュームを OSS バケットにバックアップします。

  3. バックアップボールトをターゲットの ACK クラスターに関連付けます。

  4. ACK クラスターでアプリケーションを復元します。このとき、StorageClass は Alibaba Cloud ネイティブのストレージクラスに自動的に変換されます。

前提条件

次の項目を確認してください:

重要

復元する前に、必要な ACK クラスターアドオンをインストールして設定してください:

  • aliyun-acr-credential-helper:クラスターに権限を付与し、acr-configuration を設定します。

  • alb-ingress-controllerALBConfig を設定します。

注意事項

  • ローカルボリュームをバックアップする場合は、PV と PVC を作成してマウントします。

  • サードパーティのオブジェクトストレージ、ファイルストレージ、またはブロックストレージをバックアップする場合は、CSI プラグインを介して PV と PVC でボリュームをマウントします。

事前準備

バックアップを実行する前に、これらを確認してください。

登録済みクラスター内

OSS と Cloud Backup の権限を持つ Resource Access Management (RAM) ユーザーが存在し、そのユーザーの AccessKey ID と Secret を含む alibaba-addon-secret という名前の Secret が csdr 名前空間に存在することを確認します:

kubectl get secret alibaba-addon-secret -n csdr

想定される出力:

alibaba-addon-secret   Opaque   2      5d22h

ACK クラスター内

  • ACK マネージドクラスター:Cloud Backup が有効化されており、cnfs-oss-**** という名前の OSS バケットが存在します。

  • ACK 専用クラスター:ワーカー RAM ロールに OSS と Cloud Backup の権限が付与されています。詳細については、「migrate-controller のインストールと権限付与」をご参照ください。

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

すべてのコマンドは、外部 Kubernetes クラスター (登録済みクラスターに接続されているソースクラスター) に対して実行してください。

この例では、mysql-pvc という名前の PVC、mysql-pv という名前の PV、および /mnt のマウントパスを持つ MySQL アプリケーションを使用します。

  1. test1 という名前の名前空間を作成します:

    kubectl -n test1 get pod | grep mysql-sts
  2. CSI プラグインを使用して、PV と PVC で MySQL アプリケーションのボリュームをマウントします。ご利用のクラウドプロバイダーの CSI ドキュメントを確認してください。CSI がサポートされていない場合は、登録済みクラスターに接続して、代わりに Alibaba Cloud CSI プラグインを使用します。

  3. アプリケーションが実行中であることを確認します:

    kubectl -n test1 get pod | grep mysql-sts

    想定される出力:

    mysql-sts-0   1/1     Running   0         1m02s
  4. PV に CSI フィールドが含まれていることを確認します:

    kubectl -n test1 get pv mysql-pv -oyaml

    想定される出力 (抜粋):

    csi:
      driver: ****
      volumeAttributes:
        xxxx: xxxx
        xxxx: xxxx
      volumeHandle: mysql-pv
  5. MySQL コンテナにログインします:

    kubectl -n test1 exec -it mysql-sts-0 -- /bin/bash
  6. 後で復元を確認するためにテストファイルを作成します:

    cd /mnt && touch test && ls

    想定される出力:

    test
重要

データ整合性を確保するため、バックアップを開始する前に書き込み操作を一時停止してください。

ステップ 2:登録済みクラスターでアプリケーションをバックアップ

すべての操作は、ACK コンソールの登録済みクラスターに対して実行してください。
  1. バックアップボールトが存在しない場合は、作成します。詳細については、「バックアップボールトの作成」をご参照ください。詳細については、Cloud Backup をご参照ください

  2. 登録済みクラスターで mysql-backup という名前のオンデマンドバックアップタスクを作成します。詳細については、「バックアップタスクの作成」をご参照ください。

    パラメーター
    名前 mysql-backup
    バックアップ保管庫 作成したボールトを選択
    バックアップ名前空間 test1
    ボリュームバックアップ 永続データを含めるには [ボリュームバックアップ] を選択
  3. [アプリケーションバックアップ] ページで、[バックアップレコード] をクリックします。mysql-backup[進行中] から [完了] に変わるまで待ちます。

ステップ 3:バックアップボールトを ACK クラスターに関連付け

すべての操作は、ACK コンソールの ACK クラスターに対して実行してください。

新しく作成したバックアップボールトを使用する場合、またはこの ACK クラスターにまだ関連付けていない場合は、復元する前にボールトを関連付ける必要があります。各ボールトは 1 回しか関連付けることができません。初期化後、バックアップは自動的に同期されます。

  1. [アプリケーションバックアップ] ページで、[復元] をクリックします。

  2. [復元] パネルで、[名前] を入力し、[バックアップボールト] を選択して、[バックアップボールトの初期化] をクリックします。

  3. 初期化後、バックアップボールトから解凍タスクを選択し、[OK] をクリックします。

  4. [バックアップ履歴] タブで、リストに mysql-backup が表示されるまで待ちます。

ステップ 4:ACK クラスターでアプリケーションを復元

すべての操作は、ACK コンソールの ACK クラスターに対して実行してください。

復元中、ACK クラスターは MySQL アプリケーション用に StorageClass が alibabacloud-cnfs-nas (Alibaba Cloud NAS) の PVC を動的にマウントし、新しい PV をプロビジョニングして、関連付けられたボリュームにデータを復元します。

  1. mysql-restore という名前の復元タスクを作成します。詳細については、「アプリケーションとボリュームの復元」をご参照ください。

    パラメーター
    名前 mysql-restore
    バックアップボールト 作成したボールトを選択
    バックアップの選択 mysql-backup
    名前空間のリセット test1test2
    StorageClass 変換 mysql-pvc には alibabacloud-cnfs-nas
  2. [復元記録の表示] をクリックします。 mysql-restore[進行中] から [完了] に変わるまで待ちます。

  3. アプリケーションが実行中であることを確認します:

    kubectl -n test2 get pod | grep mysql-sts

    想定される出力:

    mysql-sts-0   1/1     Running   0          4s
  4. データが復元されたことを確認します:

    1. PVC の StorageClass が alibabacloud-cnfs-nas であることを確認します:

      kubectl -n test2 get pvc | grep mysql-pvc

      想定される出力:

      mysql-pvc   Bound    nas-****   25Gi       RWO            alibabacloud-cnfs-nas   3m24s
    2. PVC が MySQL Pod にマウントされていることを確認します:

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

      想定される出力:

      Used By:       mysql-sts-0
    3. MySQL コンテナにログインし、テストデータを確認します:

      kubectl -n test2 exec -it mysql-sts-0 -- /bin/bash
      cd /mnt && ls

      想定される出力:

      test

      テストファイルが存在することから、データが正常に復元されたことが確認できます。

次のステップ