バックアップセンターを使用して、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:この機能は、バックアップ、ディザスタリカバリ、および移行を統合したソリューションを提供し、アプリケーションのクラウドへの迅速な移行と業務継続性の確保を支援します。詳細については、「登録済みクラスターの概要」をご参照ください。
注意事項
外部クラスターからデータをバックアップする場合、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 クラスターについて:
ACK マネージドクラスターでは、Cloud Backup サービスが有効になっており、cnfs-oss-**** という名前のバケットが作成されていることを確認してください。
ACK 専用クラスターの場合:Worker RAM ロールに OSS および Cloud Backup の権限が付与済みである必要があります。詳細については、「専用クラスター向け OSS 権限の構成」および「専用クラスターまたは登録済みクラスターのユーザー向け Cloud Backup 権限の構成」をご参照ください。
ステップ 1:アプリケーションのデプロイ
以下のコマンドを実行して、名前空間
test1を作成します。kubectl create namespace test1バックアップ対象ノードで、以下のコマンドを実行してマウントパスを作成します。
mkdir /mnt/diskapp-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 アプリケーションのパスワード。実際のパスワードに置き換えてください。以下のコマンドを実行して、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以下のコマンドを実行して、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 登録済みクラスター内でバックアップタスクを実行できます。
ACK One 登録済みクラスター内にバックアップボールトを作成します。詳細については、「バックアップボールトの作成」をご参照ください。
ACK One 登録済みクラスター内に、
MySQLという名前の即時バックアップを作成します。詳細な手順については、「バックアッププランまたは即時バックアップの作成」をご参照ください。名前 に
mysqlを入力し、バックアップボールト には直前のステップで作成したバックアップボールトを選択し、バックアップ名前空間 には test1 を選択します。アプリケーションバックアップ ページで、バックアップ記録 タブをクリックし、
mysql-backupジョブのステータスを確認します。進行中 から 完了 にステータスが変更された場合、バックアップは完了です。
ステップ 3:アプリケーションを ACK クラスターへ復元
本セクションでは、MySQL アプリケーションをオンライン ACK クラスターへ復元し、そのストレージを alibabacloud-cnfs-nas StorageClass へ変換する方法を説明します。
オンライン ACK クラスターの
test2名前空間に MySQL アプリケーションをデプロイし、ストレージをalibabacloud-cnfs-nasStorageClass へ変換する復元ジョブmysql-restoreを作成します。詳細については、「アプリケーションおよびボリュームの復元」をご参照ください。パラメーター
例
名前
mysql-restore
バックアップ ボールト
作成済みのバックアップボールトを選択します。バックアップボールトの初期化 ボタンが表示された場合は、クリックしてバックアップ記録の同期を待ちます。
バックアップの選択
mysql
名前空間のリセット
test1 から test2 へ。
StorageClass 変換
変換対象 PVC の一覧で、example-pvc の StorageClass として alibabacloud-cnfs-nas を選択します。
復元 の右側にある 復元記録の表示 をクリックします。
mysql-restoreジョブのステータスが 進行中 から 完了 に変更された場合、復元は完了です。ACK クラスターで、以下のコマンドを実行して、MySQL アプリケーションがデプロイされたことを確認します。
kubectl get pod -n test2 | grep mysql-sts期待される出力:
mysql-sts-0 1/1 Running 0 4sACK クラスターで、以下のコマンドを実行して、データが想定通りに復元されたことを確認します。
ストレージが
alibabacloud-cnfs-nasStorageClass へ変換されたことを確認します。kubectl get pvc -n test2 | grep example-pvc期待される出力:
example-pvc Bound nas-acde4acd-59b6-4332-90af-b74ef6****** 25Gi RWO alibabacloud-cnfs-nas 31mexample-pvc永続ボリューム要求が MySQL アプリケーションにマウントされたことを確認します。kubectl describe pvc example-pvc -n test2 | grep "Used By"期待される出力:
Used By: mysql-sts-0