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

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

最終更新日:Mar 25, 2026

バックアップセンターを使用して、ACK One 登録済みクラスターからアプリケーションおよびデータをバックアップし、オンライン ACK クラスターに復元できます。これにより、オンプレミス環境のアプリケーションをオンライン環境へ迅速に移行できます。本トピックでは、外部クラスター(ACK One 登録済みクラスターに接続済み)からオンライン ACK クラスターへのアプリケーション移行手順について説明します。

前提条件

  • 登録済みクラスターを作成し、データセンター内のクラスターに接続済みである必要があります。自己管理型 Kubernetes クラスターのバージョンは 1.16 以降である必要があります。

  • 復元先として ACK マネージドクラスターを作成済みである必要があります。ACK マネージドクラスターは、登録済みクラスターと同じリージョンに配置する必要があります。Kubernetes 1.18 以降の使用を推奨します。

    重要
    • 復元先クラスターには CSI ストレージプラグインを使用する必要があります。FlexVolume ストレージプラグインを使用するクラスター、または csi-compatible-controller コンポーネント経由で CSI と FlexVolume の両方のストレージプラグインを使用するクラスターでは、アプリケーションの復元はサポートされていません。

    • バックアップセンターは、ビジネスアプリケーションのバックアップおよび復元に焦点を当てています。復元タスクを実行する前に、復元先クラスターに必要なシステムコンポーネントをインストールおよび構成する必要があります。例:

      • aliyun-acr-credential-helper:復元先クラスターの再認証を行い、acr-configuration を構成する必要があります。

      • alb-ingress-controller:ALBConfig などのリソースを事前に構成する必要があります。

  • ACK One 登録済みクラスターおよび ACK クラスターにおいて、バックアップコンポーネントのインストールおよび権限の構成が完了している必要があります。

  • Cloud Enterprise Network (CEN)、Express Connect、VPN などの方法でクラウド VPC に接続された ACK One 登録済みクラスターの場合、OSS の内部ネットワークセグメントへのルートが設定されている必要があります。詳細については、「エンドポイントおよびバケットドメイン名を用いた OSS へのアクセス」をご参照ください。

  • Cloud Backup が有効化されました

適用範囲

ディザスタリカバリ向け Cloud Backup:この機能は、バックアップ、ディザスタリカバリ、および移行を統合したソリューションを提供し、アプリケーションのクラウドへの迅速な移行と業務継続性の確保を支援します。詳細については、「登録済みクラスターの概要」をご参照ください。

注意事項

  • 外部クラスターからデータをバックアップする場合、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 をバックアップ対象アプリケーションの実際のユーザー名およびパスワードに置き換えます。

    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> # バックアップ対象ノードの名前。
    ---
    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****             # バックアップ対象 MySQL アプリケーションのユーザー名。実際のユーザー名に置き換えてください。
      password: dGVzdDEt****     # バックアップ対象 MySQL アプリケーションのパスワード。実際のパスワードに置き換えてください。
  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:MySQL アプリケーションおよびデータのバックアップ

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

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

  2. ACK One 登録済みクラスター内に、MySQL という名前の即時バックアップを作成します。詳細な手順については、「バックアッププランまたは即時バックアップの作成」をご参照ください。

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

  3. アプリケーションバックアップ ページで、バックアップ記録 タブをクリックし、mysql-backup ジョブのステータスを確認します。進行中 から 完了 にステータスが変更された場合、バックアップは完了です。

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

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

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

    パラメーター

    名前

    mysql-restore

    バックアップ ボールト

    作成済みのバックアップボールトを選択します。バックアップボールトの初期化 ボタンが表示された場合は、クリックしてバックアップ記録の同期を待ちます。

    バックアップの選択

    mysql

    名前空間のリセット

    test1 から test2 へ。

    StorageClass 変換

    変換対象 PVC の一覧で、example-pvc の StorageClass として alibabacloud-cnfs-nas を選択します。

  2. 復元 の右側にある 復元記録の表示 をクリックします。mysql-restore ジョブのステータスが 進行中 から 完了 に変更された場合、復元は完了です。

  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