目次
スナップショットを作成するスナップショットは、特定の時点での Kubernetes ボリュームの状態です。 既存のクラスターのスナップショットを作成するには、
スナップショットを作成すると、ボリューム ヘッダーの前のボリュームのスナップショットのリストに表示されます。 定期的なスナップショットとバックアップLonghorn UI から、定期的なスナップショットとバックアップをスケジュールできます。 スケジュールを設定するには、Longhorn のボリューム詳細ビューに移動します。次に、次のように設定します。
Longhorn は、ボリュームがノードに接続されるたびに、現在のユーザーのスナップショットまたはバックアップを自動的に作成します。 定期的なスナップショットは、Longhorn UI または Kubernetes StorageClass を使用して構成できます。 注: ボリュームに長期間新しいデータがない場合、定期的なジョブによって古いバックアップ/スナップショットが同じバックアップと空のスナップショットで上書きされるという問題を回避するために、Longhorn は次の処理を実行します。
Longhorn UI を使用して定期的なスナップショットを設定する 定期的なスナップショットとバックアップは、ボリュームの詳細ページから設定できます。このページに移動するには、「ボリューム」をクリックし、ボリュームの名前をクリックします。 StorageClass で定期的なジョブを設定する スケジュールされたバックアップとスナップショットは、StorageClass の recurringJobs パラメータで設定できます。 この StorageClass を使用して今後作成されるボリュームには、これらの定期的なジョブが自動的に設定されます。 recurringJobs フィールドは次の JSON 形式に従う必要があります。
定期的なジョブごとに次のパラメータを指定する必要があります。
ボリュームをデタッチするときに繰り返しジョブを許可するLonghorn には allow-recurring-job-while-volume-detached 設定が用意されており、ボリュームが切断されている場合でも定期的なバックアップを実行できます。この設定は Longhorn UI にあります。 この設定を有効にすると、Longhorn はボリュームを自動的に接続し、必要に応じて定期的なスナップショット/バックアップを実行します。 ボリュームは自動的に接続されますが、まだワークロードを処理する準備ができていないことに注意してください。定期的なジョブが完了するまでワークロードは待機する必要があります。 災害復旧ボリュームディザスタリカバリ (DR) ボリュームは、プライマリ クラスター全体に障害が発生した場合にバックアップ クラスターにデータを保存するために使用される特別なボリュームです。災害復旧ボリュームは、Longhorn ボリュームの回復力を高めるために使用されます。 災害復旧ボリュームの場合、「最終バックアップ」は元のバックアップ ボリュームの最新のバックアップを示します。 災害ボリュームを表すアイコンが灰色の場合、ボリュームが最後のバックアップを回復中であり、ボリュームをアクティブ化できないことを意味します。アイコンが青色の場合、ボリュームが最後のバックアップに復元されたことを意味します。 災害復旧 (DR) ボリュームの作成前提条件: 2 つの Kubernetes クラスターをセットアップします。これらは、クラスター A およびクラスター B と呼ばれます。両方のクラスターに Longhorn をインストールし、両方のクラスターに同じバックアップ先を設定します。
バックアップ先の設定バックアップ ターゲットは、Longhorn のバックアップ ストアにアクセスするために使用されるエンドポイントです。 backupstore は、Longhorn ボリュームのバックアップを保存する NFS サーバーまたは S3 互換サーバーです。バックアップ対象は、「設定/一般/バックアップ対象」で設定できます。 AWS S3 にアクセスできない場合、または最初にバックアップ ストレージを試してみたい場合は、MinIO を使用してローカル S3 テスト バックアップ ストレージをセットアップする方法も提供しています。 Longhorn は、Longhorn UI または Kubernetes ストレージ クラスを介してボリュームの定期的なスナップショット/バックアップ ジョブの設定もサポートします。 AWS S3 バックアップストレージの設定 AWS S3 に新しいバケットを作成します。 Longhorn の権限を設定します。資格情報を設定するには 2 つのオプションがあります。まず、AWS IAM ユーザーの認証情報を使用して Kubernetes シークレットを設定できます。 2 つ目は、AWS 認証情報を使用して操作するのではなく、サードパーティのアプリケーションを使用して、アノテーションを通じてポッドの一時的な AWS IAM 権限を管理できることです。
kube2iam または kiam は、AWS 認証情報を操作するのではなく、注釈を通じてポッドの AWS IAM 権限を管理できる Kubernetes アプリケーションです。 kube2iam または kiam の GitHub リポジトリの指示に従って、Kubernetes クラスターにインストールします。 ガイドに従って、AWS S3 サービス用の新しい AWS IAM ロールを作成し、次の権限を設定します。
次の信頼関係を持つ AWS IAM ロールを編集します。
Longhorn 名前空間 (デフォルトでは longhorn-system) に aws-secret という名前の Kubernetes シークレットを作成します。 Longhorn がアクセスできるようにするには、シークレットを longhorn-system 名前空間に作成する必要があります。
ガイドに従って新しい AWS IAM ユーザーを作成し、次の権限を設定します。 S3 バケット名を使用するようにリソース セクションを編集します。
Longhorn が配置されている名前空間 (デフォルトでは longhorn-system) に aws-secret という名前の Kubernetes シークレットを作成します。 Longhorn がアクセスできるようにするには、シークレットを longhorn-system 名前空間に作成する必要があります。
Longhorn UI に移動します。上部のナビゲーション バーで、[設定] をクリックします。バックアップ セクションで、バックアップ ターゲットを次のように設定します。
最後に / があることを確認してください。そうでない場合はエラーが報告されます。サブディレクトリ (プレフィックス) を使用できます:
また、 たとえば、AWS の場合、リージョン コードは https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html で確認できます。 Google Cloud Storage の場合、リージョン コードは https://cloud.google.com/storage/docs/locations で確認できます。 バックアップ セクションで、バックアップ ターゲット資格情報シークレットを次のように設定します。
これは、AWS 認証情報または AWS IAM ロールを持つシークレットの名前です。 結果: Longhorn は S3 にバックアップを保存できます。バックアップを作成するには、このセクションを参照してください。 注: プロキシの背後で Longhorn を操作していて、AWS S3 をバックアップ ストレージとして使用する場合は、次のように aws-secret でプロキシに関する Longhorn 情報を提供する必要があります。
NO_PROXY に、プロキシを使用しないネットワーク アドレス、ネットワーク アドレス範囲、およびドメインが含まれていることを確認します。 Longhorn が動作するために必要な NO_PROXY の最小値は次のとおりです。
ローカルテストバックアップストレージの設定NFS サーバーと MinIO S3 サーバーに基づいて、./deploy/backupstores にテスト用の 2 つのバックアップ ストア (backupstore) を提供します。 longhorn-system を作成した後、次のコマンドを使用して、バックアップ ストレージ用の MinIO S3 サーバーを設定します。
Longhorn UI に移動します。上部のナビゲーション バーで、[設定] をクリックします。バックアップセクションで、バックアップターゲットを
バックアップ ターゲット資格情報シークレットを次のように設定します。
minio-secret yaml は次のとおりです。
シークレットの作成の詳細については、Kubernetes のドキュメントを参照してください。 Longhorn がアクセスするには、シークレットを longhorn-system 名前空間に作成する必要があります。 注意: base64 エンコーディングを生成するときは必ず echo -n を使用してください。そうしないと、文字列の末尾に新しい行が追加され、S3 にアクセスするときにエラーが発生します。 UI の「バックアップ」タブをクリックします。エラーなしで空のリストが報告されるはずです。 結果: Longhorn は S3 にバックアップを保存できます。 S3通信に自己署名SSL証明書を使用する 自己署名 SSL 証明書を使用する場合は、Longhorn に提供される Kubernetes シークレットに AWS_CERT を指定できます。ローカル テスト バックアップ ストアの設定の例を参照してください。証明書は PEM 形式である必要があり、独自の CA である必要があることに注意することが重要です。または、CA 証明書を含む証明書チェーンを含める必要があります。複数の証明書を含めるには、異なる証明書 (PEM ファイル) を連結するだけです。 S3互換バックアップストレージへの仮想ホストスタイルのアクセスを有効にする 次の状況では、S3 互換バックアップ ストレージに対してこの新しいアドレス指定方法を有効にすることが必要な場合があります。
仮想ホスト形式のアクセスを有効にする方法 バックアップ先のシークレットに、値が true の新しいフィールド VIRTUAL_HOSTED_STYLE を追加します。例えば:
シークレットをデプロイ/更新し、Settings/General/BackupTargetSecret に設定します。 NFS バックアップ ストレージ NFS サーバーをバックアップ ストレージとして使用するには、NFS サーバーが NFSv4 をサポートしている必要があります。 ターゲット URL は次のようになります。
結果: Longhorn は NFS にバックアップを保存できます。 バックアップを作成するLonghorn のバックアップは、クラスター外のバックアップ ストレージ内のオブジェクトです。スナップショットのバックアップはバックアップ ストレージにコピーされ、バックアップ ストレージにアクセスするエンドポイントがバックアップの対象になります。 前提条件: バックアップ先を設定する必要があります。詳細については、「バックアップ先の設定」を参照してください。 BackupTarget が設定されていない場合はエラーが発生します。 バックアップを作成するには、
結果: バックアップが作成されました。表示するには、上部のナビゲーション バーの [バックアップ] をクリックします。 バックアップからの復元Longhorn では、ボリュームへのバックアップを簡単に復元できます。 バックアップを復元すると、デフォルトで同じ名前のボリュームが作成されます。バックアップと同じ名前のボリュームがすでに存在する場合、バックアップは復元されません。 バックアップを復元するには、
結果: 復元されたボリュームはボリューム ページで利用できるようになります。 Kubernetes StatefulSets のボリュームの復元Longhorn はバックアップの復元をサポートしています。この機能のユースケースの 1 つは、Kubernetes StatefulSet で使用されるデータを復元することです。このためには、バックアップされたレプリカごとにボリュームを復元する必要があります。 復元するには、以下の手順に従ってください。次の例では、各ポッドに 1 つのボリュームと 2 つのレプリカが接続された StatefulSet を使用します。 Web ブラウザで Longhorn UI ページに接続します。 [バックアップ] タブで、StatefulSet ボリュームの名前を選択します。ボリューム エントリのドロップダウン メニューをクリックして復元します。後で簡単に参照できるように、ボリュームに「永続ボリューム」という名前を付けます。
回復する必要があるボリュームごとにこの手順を繰り返します。 たとえば、pvc-01a と pvc-02b という名前のボリュームを持つ 2 つのレプリカを含む StatefulSet を復元する場合、復元は次のようになります。 Kubernetes では、作成された Longhorn ボリュームごとに永続ボリュームが作成されます。後で簡単に参照できるように、ボリュームに「Persistent Volume Claim」という名前を付けます。以下のストレージ容量、numberOfReplicas、storageClassName、volumeHandle を置き換える必要があります。この例では、Longhorn の statefulset-vol-0 と statefulset-vol-1 を参照し、storageClassName として longhorn を使用しました。
名前空間では、StatefulSet がデプロイされ、各永続ボリュームに対して PersistentVolume Claims が作成されます。永続ボリューム要求の名前は、次の命名規則に従う必要があります。
StatefulSet Pod はゼロインデックスです。この例では、ボリューム クレーム テンプレートの名前は data、StatefulSet の名前は webapp で、インデックス 0 と 1 の 2 つのレプリカがあります。
StatefulSet を作成します。
結果: 復元されたデータは、StatefulSet Pod 内からアクセスできるようになります。 クラスターでCSIスナップショットのサポートを有効にする前提条件 CSI スナップショットのサポートは、Kubernetes バージョン 1.17 以上で利用できます。 Kubernetes ディストリビューションは、スナップショット コントローラーと関連するカスタム リソース定義のデプロイを担当します。 詳細については、「CSI ボリューム スナップショット」を参照してください。 デフォルトのVolumeSnapshotClassを追加する スナップショット ベータ CRD の可用性を確認します。次に、デフォルトの VolumeSnapshotClass を作成します。
エアギャップ環境で以前のLonghornリリースからアップデートする場合
Kubernetesディストリビューションにスナップショットコントローラがバンドルされていない場合 以下の手順に従って、これらのコンポーネントを手動でインストールできます。 以下に示すスナップショット コントローラー YAML ファイルは、デフォルトの名前空間にデプロイされることに注意してください。 前提条件 一般的な使用では、インストールする前に、スナップショット コントローラー YAML を適切な名前空間で更新します。 たとえば、標準の Kubernetes クラスターでは、kubectl create コマンドを発行する前に、名前空間を default から kube-system に更新します。 スナップショット ベータ CRD をインストールします。 https://github.com/kubernetes-csi/external-snapshotter/tree/release-4.0/client/config/crd からファイルをダウンロードします。 kubectl create -f client/config/crd を実行します。 クラスターごとに 1 回実行します。 共通スナップショット コントローラーをインストールします。 https://github.com/kubernetes-csi/external-snapshotter/tree/release-4.0/deploy/kubernetes/snapshot-controller からファイルをダウンロードします。 名前空間を環境に適した値に更新します(例:kube-system) kubectl create -f deploy/kubernetes/snapshot-controllerを実行します。 クラスターごとに 1 回実行します。 詳細については、kubernetes-external-snapshotter git リポジトリの使用法セクションを参照してください。 CSI によるバックアップの作成Longhorn のバックアップはクラスター外のバックアップ ストア内のオブジェクトであり、バックアップ ストアにアクセスするためのエンドポイントがバックアップ ターゲットです。 プログラムでバックアップを作成するには、汎用の Kubernetes CSI スナップショット メカニズムを使用できます。 前提条件: クラスターで CSI スナップショット サポートを有効にする必要があります。 Kubernetes ディストリビューションが Kubernetes スナップショット コントローラーとスナップショット関連のカスタム リソース定義を提供しない場合は、それらを手動でデプロイする必要があります。詳細については、「CSI スナップショット サポートを有効にする」を参照してください。 CSIメカニズムによるバックアップの作成CSI メカニズムを使用してバックアップを作成するには、kubectl 経由で Kubernetes VolumeSnapshot オブジェクトを作成します。 結果: バックアップが作成されました。 VolumeSnapshot オブジェクトを作成すると、VolumeSnapshotContent Kubernetes オブジェクトが作成されます。 VolumeSnapshotContent は、VolumeSnapshotContent.snapshotHandle フィールドで bs://backup-volume/backup-name という名前の Longhorn バックアップを参照します。 CSIメカニズムの仕組みkubectl を使用して VolumeSnapshot オブジェクトを作成する場合、VolumeSnapshot.uuid フィールドを使用して、Longhorn スナップショットと関連する VolumeSnapshotContent オブジェクトを識別します。 これにより、snapshot-uuid という名前の新しい Longhorn スナップショットが作成されます。 次に、スナップショットのバックアップを開始し、CSI 要求を返します。 次に、snapcontent-uuid という名前の VolumeSnapshotContent オブジェクトを作成します。 CSI スナップショット サイドカーは定期的に Longhorn CSI プラグインを照会して、バックアップ ステータスを評価します。 バックアップが完了すると、VolumeSnapshotContent.readyToUse フラグが true に設定されます。 バックアップを表示バックアップを表示するには、上部のナビゲーション バーで [バックアップ] をクリックし、VolumeSnapshotContent.snapshotHandle に記載されているバックアップ ボリューム (backup-volume) に移動します。 VolumeSnapshotの例 以下は VolumeSnapshot オブジェクトのサンプルです。ソースは、バックアップを作成する Longhorn ボリュームの PVC を指す必要があります。 volumeSnapshotClassName フィールドは VolumeSnapshotClass を指します。 deletePolicy として Delete を使用する longhorn というデフォルト クラスを作成しました。
VolumeSnapshot を削除するときにボリュームに関連付けられたバックアップを保持する場合は、新しい VolumeSnapshotClass を作成し、削除ポリシーとして Retain を設定します。 スナップショット クラスの詳細については、VolumeSnapshotClasses に関する Kubernetes ドキュメントを参照してください。 CSI 経由でバックアップを復元するLonghorn では、ボリュームへのバックアップを簡単に復元できます。 プログラムでバックアップを復元するには、汎用 Kubernetes CSI スナップショット メカニズムを使用できます。 前提条件 クラスターで CSI スナップショット サポートを有効にする必要があります。 Kubernetes ディストリビューションが Kubernetes スナップショット コントローラーとスナップショット関連のカスタム リソース定義を提供しない場合は、それらを手動でデプロイする必要があります。 VolumeSnapshot オブジェクトを使用してバックアップを復元するdataSource フィールドが既存の VolumeSnapshot オブジェクトを指す PersistentVolumeClaim オブジェクトを作成します。 csi-provisioner はそれを取得し、関連付けられているバックアップのデータを使用して新しいボリュームをプロビジョニングするように Longhorn CSI ドライバーに指示します。 同じメカニズムを使用して、CSI メカニズムを通じて作成されなかった Longhorn バックアップを復元できます。 以下は PersistentVolumeClaim の例です。 dataSource フィールドは、既存の VolumeSnapshot オブジェクトを指す必要があります。
関連するボリュームスナップショットなしでバックアップを復元するCSI メカニズムを使用して作成されなかった Longhorn バックアップを復元するには、まずバックアップの VolumeSnapshot オブジェクトと VolumeSnapshotContent オブジェクトを手動で作成する必要があります。 VolumeSnapshotContent オブジェクトを作成し、snapshotHandle フィールドを bs://backup-volume/backup-name に設定します。 バックアップ ボリュームとバックアップ名の値は、Longhorn UI のバックアップ ページから取得できます。
関連する VolumeSnapshot オブジェクトを作成し、name フィールドを test-snapshot-existing-backup に設定します。ここで、source フィールドは volumeSnapshotContentName フィールドを通じて VolumeSnapshotContent オブジェクトを参照します。 これはバックアップの作成とは異なります。バックアップの作成の場合、ソース フィールドは persistentVolumeClaimName フィールドを通じて PerstistentVolumeClaim を参照します。 VolumeSnapshot オブジェクトに設定できる参照の種類は 1 つだけです。
これで、新しく作成された VolumeSnapshot オブジェクトを参照する PerstistentVolumeClaim オブジェクトを作成できます。 |
<<: HarmonyOS サンプル DistributedMusicPlayer 分散音楽プレーヤー
>>: エンタープライズクラウド戦略におけるクラウド導入成熟度モデルの重要性
[[358883]]では、早速本題に入りましょう。グループ 1: JDK、JRE、JVM の関係JD...
今日はビリビリについてお話しましょう。 1.ステーションBは水平方向と垂直方向の両方でサークルを突破...
最近、誰もがオリジナリティの問題について語っています。多くのウェブマスターは、オリジナリティは外部リ...
原題: 百度とテンセントが共同で安全検索同盟を構築深セン特区日報(王暁青記者)フィッシングや詐欺など...
はじめに: WeChat マーケティングはどれほど優れているのでしょうか? どれほど悪いのでしょうか...
[[373364]]この記事はWeChatの公開アカウント「DBA Random Thoughts ...
ドメイン名ニュース:本日、国内の有名なスポーツコミュニティHupu.comは、新しいドメイン名hup...
hostmybytes から最新のプロモーション メールを送信しました: 元の割引 VPS マシンは...
swedendedicated について紹介します。同社は 2006 年にゲーム サーバーと仮想ホス...
政策の推進、情報構築の改善、革新技術の強化により、医療はインテリジェント化の段階に入りました。市場規...
キーワードはウェブサイトの魂です。適切なキーワード拡張作業が行われないと、多くのキーワードはランキン...
1. 背景紹介: 多くの学生はKafkaパラメータを理解していない今日は非常に興味深い話題について...
サーバーレス コンピューティングは、クラウド コンピューティングの開発トレンドの 1 つであり、最も...
9月10日、マイクロソフトの公式ブログでAzure DevOpsサービスの開始が発表されました。 A...
Linodeはどうですか? Linode Japanはどうですか?日本の大阪Linodeはどうですか...