バックアップセンターを使用して、Container Service for Kubernetes (ACK) クラスター内のアプリケーションをクロスリージョンでバックアップおよび復元し、ディザスタリカバリを実現します。
事前準備
続行する前に、これらの制約を確認してください。
| 制約 | 詳細 |
|---|---|
| ストレージタイプ | Alibaba Cloud ディスク上のアプリケーションとボリュームのみをサポートします。他のストレージタイプでは、ボリュームデータを完全に移行することはできません。 |
| Alibaba Cloud 以外のストレージを使用するステートフルアプリ | [Backup Volume]これらのアプリケーションでは をクリアしてください。そうしないと、クロスリージョンでの復元が失敗します。 |
| 移行先クラスターのバージョン | Elastic Compute Service (ECS) スナップショットからクラウドディスクデータを復元するには、移行先クラスターで Kubernetes 1.18 以降を実行している必要があります。 |
| 移行先クラスターのストレージプラグイン | 移行先クラスターでは、Container Storage Interface (CSI) ストレージプラグインを使用する必要があります。FlexVolume を使用しているクラスター、または csi-compatible-controller を介して CSI と FlexVolume の両方を使用しているクラスターはサポートされていません。 |
| 削除中のリソース | バックアップ中に削除中のリソースは除外されます。 |
| バックアップリポジトリの不変性 | バックアップリポジトリは作成後に変更できず、削除のみ可能です。同じ名前で再作成しても、元のリポジトリを使用したクラスターでは機能しません。 |
| ACK 専用クラスターおよび登録済みクラスター | ECS 上のセルフマネージド Kubernetes クラスターの場合、クロスリージョンのボリューム復元を使用する前に、ECS クラウドディスクスナップショットの権限を確認してください。詳細については、「migrate-controller バックアップサービスコンポーネントのインストールと権限の設定」をご参照ください。 |
前提条件
以下が準備できていることを確認してください:
-
Kubernetes 1.18 以降を実行している移行先クラスターが用意されていること (「ACK マネージドクラスターの作成」、「ACK 専用クラスターの作成 (新規作成は不可)」、または「登録済みクラスターの作成とデータセンタークラスターへの接続」をご参照ください) 。
-
移行先クラスターで CSI ストレージプラグインが使用されていること。
-
復元前に、移行先クラスターに以下のシステムコンポーネントがインストールされていること:
-
ACR パスワードレスアドオン: 権限を付与し、
acr-configurationを設定します。 -
ALB Ingress アドオン:
ALBConfigやその他の設定を構成します。
-
-
両方のクラスターに
migrate-controllerアドオンがインストールされ、権限が設定されていること。 詳細については、「migrate-controller バックアップサービスコンポーネントをインストールし、権限を設定する」をご参照ください。 -
ECS クラウドディスクスナップショットが有効になっていること。詳細については、「ECS クラウドディスクスナップショットの有効化」をご参照ください。スナップショットサービスの有効化は無料です。スナップショットは、サイズと保持期間に基づいて従量課金が発生します。詳細については、「スナップショットの課金」をご参照ください。
事前準備
この例では、以下の設定を使用します:
-
バックアップクラスター:中国 (北京) リージョンの ACK Pro クラスター Cluster_BJ
-
移行先クラスター:中国 (深圳) リージョンの ACK Pro クラスター Cluster_SZ
-
バックアップリポジトリ:中国 (北京) リージョンの OSS バケットに関連付け
手順 1: 中国 (北京) リージョンで、cnfs-oss-*** で始まる名前の OSS バケットを作成します。
このリージョンに条件を満たす OSS バケットがすでに存在する場合は、このステップをスキップしてください。
ステップ2:Cluster_BJ のデフォルト名前空間にステートフルな Nginx アプリケーションを作成します。
cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
labels:
app: nginx
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "alicloud-disk-topology-alltype"
resources:
requests:
storage: 20Gi
EOF
ステップ1:バックアップリポジトリの作成
バックアップセンターはバックアップデータを OSS に保存します。リポジトリが存在しない場合は作成してください。
-
バックアップリポジトリとその OSS バケット間のネットワークは自動的に設定され、バックアップのアップロードおよびダウンロード速度に影響します。
-
同一リージョン (クラスターと OSS バケット):PrivateLink が使用されます。
-
異なるリージョン (クラスターと OSS バケット、クロスリージョンシナリオなど):パブリックネットワーク接続を使用します。続行する前に、パブリックネットワークアクセスを有効にしてください。詳細については、「クラスターのパブリックネットワークアクセスの有効化」をご参照ください。
-
-
バックアップリポジトリは作成後に変更できず、削除のみ可能です。同じ名前で再作成しても、元のリポジトリを使用したクラスターでは機能しません。
詳細については、「バックアップリポジトリの作成」をご参照ください。
ステップ2:Cluster_BJ でのアプリケーションのバックアップ
クロスリージョン移行は、ステートレスアプリケーションと、Alibaba Cloud ディスクのみを使用するステートフルアプリのみをサポートします。他のステートフルアプリについては、復元の失敗を防ぐために [Backup Volume] をクリアしてください。
詳細については、「バックアップスケジュールまたは即時バックアップの作成」をご参照ください。
ステップ3:Cluster_SZ でのアプリケーションの復元
詳細については、「アプリケーションとボリュームの復元」をご参照ください。
ステップ4:移行の確認
Nginx アプリケーションが Cluster_SZ で正しく実行されていることを確認します。
kubectl の使用:
kubectl get pods -n default
kubectl get pvc -n default
Pod のステータスが Running で、PersistentVolumeClaim (PVC) が Bound であることを確認します。
コンソールの使用:
-
コンテナサービス管理コンソールにログインします。左側のナビゲーションペインで、[クラスター] をクリックします。
-
Cluster_SZ 管理ページの左側のナビゲーションペインで、[ワークロード] > [StatefulSet] を選択します。
-
Nginx アプリケーションの [アクション] 列で [詳細] をクリックし、[Pods] タブをクリックして、アプリケーションのステータスが [実行中] であることを確認します。
次のステップ
-
ストレージプラグインまたは Kubernetes のバージョンが異なるクラスター間で移行するには、「バックアップセンターを使用した旧バージョンの Kubernetes クラスターからのアプリケーション移行」をご参照ください。
-
コマンドラインでアプリケーションを移行するには、「kubectl を使用したクラスターアプリケーションのバックアップと復元」をご参照ください。