|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です SUSE® Storage 1.12 (Dev). |
Kubernetes StatefulSetのボリュームを復元する
Longhornはバックアップの復元をサポートしており、この機能の使用例の一つは、Kubernetes StatefulSetで使用するデータを復元することです。これは、バックアップされた各レプリカのボリュームを復元する必要があります。
復元するには、以下の手順に従ってください。以下の例では、各Podに1つのボリュームが接続され、2つのレプリカを持つStatefulSetを使用しています。
-
ウェブブラウザで`Longhorn UI`ページに接続します。「
Backup」タブで、StatefulSetボリュームの名前を選択します。ボリュームエントリのドロップダウンメニューをクリックし、復元を実行します。後で`Persistent Volumes`で簡単に参照できるような名前をボリュームに付けてください。-
復元が必要な各ボリュームについてこの手順を繰り返します。
-
例えば、各レプリカにそれぞれ`pvc-01a`と`pvc-02b`というボリュームが割り当てられている2レプリカのStatefulSetを復元する場合、復元の方法は次のようになります:
バックアップ名 復元されたボリューム pvc-01a
statefulset-vol-0
pvc-02b
statefulset-vol-1
-
-
Kubernetesで、作成された各Longhornボリュームのために`Persistent Volume`を作成します。後で`Persistent Volume Claims`で簡単に参照できるような名前をボリュームに付けてください。
storage`の容量、`numberOfReplicas、storageClassName、`volumeHandle`は、以下で置き換えてください。この例では、Longhornで`statefulset-vol-0`と`statefulset-vol-1`を参照し、`longhorn`を私たちの`storageClassName`として使用しています。apiVersion: v1 kind: PersistentVolume metadata: name: statefulset-vol-0 spec: capacity: storage: <size> # must match size of Longhorn volume volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete csi: driver: driver.longhorn.io # driver must match this fsType: ext4 volumeAttributes: numberOfReplicas: <replicas> # must match Longhorn volume value staleReplicaTimeout: '30' # in minutes volumeHandle: statefulset-vol-0 # must match volume name from Longhorn storageClassName: longhorn # must be same name that we will use later --- apiVersion: v1 kind: PersistentVolume metadata: name: statefulset-vol-1 spec: capacity: storage: <size> # must match size of Longhorn volume volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete csi: driver: driver.longhorn.io # driver must match this fsType: ext4 volumeAttributes: numberOfReplicas: <replicas> # must match Longhorn volume value staleReplicaTimeout: '30' volumeHandle: statefulset-vol-1 # must match volume name from Longhorn storageClassName: longhorn # must be same name that we will use later暗号化されたボリュームを使用している場合、`PersistentVolume`を作成する際に、`nodePublishSecretRef`と`nodeStageSecretRef`を指定する必要があります。
kind: PersistentVolume metadata: name: statefulset-encrypted-vol-0 spec: capacity: storage: <size> volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete csi: driver: driver.longhorn.io fsType: ext4 nodePublishSecretRef: name: <secret-name> namespace: <namespace> nodeStageSecretRef: name: <secret-name> namespace: <namespace> volumeAttributes: numberOfReplicas: <replicas> staleReplicaTimeout: "30" volumeHandle: statefulset-encrypted-vol-0 storageClassName: longhorn -
`namespace`がデプロイされる`StatefulSet`で、各`Persistent Volume`ごとにPersistentVolume Claim for each を作成します。`Persistent Volume Claim`の名前は、この命名規則に従う必要があります:
<name of Volume Claim Template>-<name of StatefulSet>-<index>
StatefulSetポッドはゼロインデックスです。この例では、
ボリュームクレームテンプレート`の名前は+`data`で、`StatefulSet+の名前は`webapp`であり、インデックス`0`と`1`の2つのレプリカがあります。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data-webapp-0 spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi # must match size from earlier storageClassName: longhorn # must match name from earlier volumeName: statefulset-vol-0 # must reference Persistent Volume --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data-webapp-1 spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi # must match size from earlier storageClassName: longhorn # must match name from earlier volumeName: statefulset-vol-1 # must reference Persistent Volume -
`StatefulSet`を作成してください:
apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: webapp # match this with the PersistentVolumeClaim naming scheme spec: selector: matchLabels: app: nginx # has to match .spec.template.metadata.labels serviceName: "nginx" replicas: 2 # by default is 1 template: metadata: labels: app: nginx # has to match .spec.selector.matchLabels spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: data mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: data # match this with the PersistentVolumeClaim naming scheme spec: accessModes: [ "ReadWriteOnce" ] storageClassName: longhorn # must match name from earlier resources: requests: storage: 2Gi # must match size from earlier
*結果:*復元されたデータは、`StatefulSet``Pods`の内部からアクセスできるようになっているはずです。