Защита пользовательских данных с помощью модуля Data Protection
В данном разделе описана защита пользовательских данных с помощью модуля Data Protection.
1. Установка модуля Nova Data Protection
Для установки модуля Data Protection в Nova Container Platform с настройками по умолчанию используйте представленный далее манифест кастомизации.
Манифест кастомизации
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: nova-release-velero-main
namespace: nova-gitops
labels:
nova-application-group: data-protection
kustomization.nova-platform.io/cluster: "true"
spec:
serviceAccountName: kustomize-controller
commonMetadata:
labels:
app.kubernetes.io/managed-by: Nova
interval: 10m
retryInterval: 30s
timeout: 5m
prune: false
force: true
dependsOn:
- name: nova-release-cluster-crds
sourceRef:
kind: GitRepository
name: nova-release-gitrepo-main
path: ./resources/velero/main
postBuild:
substituteFrom:
- kind: ConfigMap
name: nova-gitops-common-substitute-config
healthChecks:
- apiVersion: apps/v1
kind: Deployment
name: velero
namespace: nova-cluster-backup
- apiVersion: apps/v1
kind: DaemonSet
name: node-agent
namespace: nova-cluster-backup
1.1. Установка в Kubernetes
Необходимые условия
-
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
Вы установили утилиту
kubectlдля работы с Kubernetes.
-
Сохраните полученный манифест и установите его в кластер Kubernetes с помощью Nova Console или kubectl.
Пример вывода:kubectl apply -f nova-release-cluster-backup-velero.yaml kustomization.kustomize.toolkit.fluxcd.io/nova-release-velero-main created -
Проверьте статус кастомизации:
kubectl get ks nova-release-velero-main -n nova-gitopsПример вывода:kubectl get ks nova-release-velero-main -n nova-gitops NAME AGE READY STATUS nova-release-velero-main 55s True Applied revision: v6.2.0@sha1:86f53cb7e4dbacb29fa42f2c1c9814fa6aec7a07 -
Проверьте состояние запущенных компонентов Velero, выполнив команду:
kubectl get pods -n nova-cluster-backupПример вывода:kubectl get pods -n nova-cluster-backup NAME READY STATUS RESTARTS AGE velero-7877767f4-zkdbh 1/1 Running 0 22s node-agent-b4wrh 1/1 Running 0 22s node-agent-hpcj5 1/1 Running 0 22s node-agent-tmvvp 1/1 Running 0 22s node-agent-vhh6b 1/1 Running 0 22s node-agent-w2qbb 1/1 Running 0 22s node-agent-xk5l4 1/1 Running 0 22s node-agent-xlh6k 1/1 Running 0 22sНа данном этапе установка модуля с настройками по умолчанию завершена, и вы можете перейти к его настройке.
2. Настройка хранилища резервных копий
В модуле Data Protection ПО Velero поставляется с плагином для подключения к объектному хранилищу, совместимому с Amazon Web Services (AWS) S3. Вы также можете использовать любые S3-совместимые хранилища для подключения к Velero.
Для подключения объектного хранилища в Velero вам необходимо настроить в Kubernetes объект Secret, в котором должны быть установлены учетные данные. Как правило, это переменные aws_access_key_id и aws_secret_access_key. Кроме этого, вам потребуется переопределить точку подключения к объектному хранилищу.
Следуйте инструкциям ниже, чтобы настроить хранилище резервных копий.
2.1. Настройка секрета доступа к объектному хранилищу
Секрет доступа к объектному хранилищу должен быть размещен в среде Kubernetes. Для корректной работы Velero должен быть создан секрет по умолчанию, который будет использоваться для доступа к объектному хранилищу в случаях, когда отдельный секрет явно не указан.
При дальнейшей настройке вы можете создать любое дополнительное количество секретов.
|
Размещение секрета доступа к объектному хранилищу в StarVault не дает явных преимуществ в безопасности платформы. При этом значительно повышается сложность эксплуатации решения по резервному копированию, особенно, когда резервное копирование выполняется в разные бакеты или хранилища, где требуются отдельные учетные записи. |
Необходимые условия
-
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
У вас подготовлена учетная запись для доступа к объектному хранилищу.
-
Создайте на локальной машине файл, например,
cloud-credentials. В данном файле необходимо указать учетную запись по умолчанию для подключения к объектному хранилищу.Пример вывода:cat << EOF > ./cloud-credentials [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF -
Создайте секрет по умолчанию:
kubectl create secret generic cloud-credentials -n nova-cluster-backup --from-file cloud=cloud-credentialsПример вывода:kubectl create secret generic cloud-credentials -n nova-cluster-backup --from-file cloud=cloud-credentials secret/cloud-credentials created
2.2. Настройка ключа шифрования данных
Резервные копии персистентных данных (файлов) зашифровываются с помощью ключа, хранимого в StarVault. Данный ключ уникален для каждой инсталляции Nova Container Platform. При необходимости, вы можете сменить ключ шифрования следуя процедуре ниже.
|
Рекомендуется сменить ключ шифрования до настройки каких-либо планов резервного копирования. После настройки ключа шифрования вам необходимо выполнить перезапуск Velero с помощью команды:
|
Необходимые условия
-
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
У вас есть токен доступа к хранилищу секретов StarVault с привилегиями
root. -
У вас подготовлена учетная запись для доступа к объектному хранилищу.
-
Подключитесь к StarVault следуя процедуре, описанной в разделе Подключение к StarVault.
-
Перейдите в раздел Secrets, выберете секрет
nova-secrets. -
В секрете
nova-secretsперейдите вcredentials, далее вnova-velero. -
Создайте новую версию секрета, используя кнопку “Create new version” измените значение ключа
repository_passwordна новое.
2.3. Настройка BackupStorageLocation
Для того, чтобы создать резервную копию, необходимо сначала создать место, в котором будет сохранена резервная копия. Для корректной работы необходимо хотя бы 1 место. Чтобы создать место, необходимо выполнить следующие шаги:
-
Создайте место для хранения резервной копии одним из способов:
Через CLI
Подготовьте манифест CR BackupStorageLocation и установите его в кластер Kubernetes с помощью Nova Console или kubectl.
YAML-манифест
apiVersion: velero.io/v1 kind: BackupStorageLocation metadata: labels: app.kubernetes.io/managed-by: Nova name: default (1) namespace: nova-cluster-backup (2) spec: config: region: ru-dc-1 (3) s3Url: https://s3.mycompany.local (4) checksumAlgorithm: "" (5) default: true (6) objectStorage: bucket: velero-backup-bucket (7) provider: aws (8) credential: name: cloud-credentials (9) key: cloud1 metadata.name(тип данных:string) - имя CR BackupStorageLocation.2 metadata.namespace(тип данных:string) - пространство имен, где регистрируется объектное хранилище.3 spec.config.region(тип данных:string) регион для подключения к объектному хранилищу. Заполнение не обязательно.4 s3Url(тип данных:string) - точка подключения к объектному хранилищу.5 checksumAlgorithm(тип данных:string) - поле, определяющее алгоритм рассчета контрольной суммы, который используется для загрузки объектов в s3.Поддерживаемые значения: CRC32, CRC32C, SHA1, SHA256Поле checksumAlgorithm является опциональным. По умолчанию значение равно CRC32.
Если пользовательское s3 хранилище не поддерживает алгоритмы, приведенные выше, поле checksumAlgorithm следует задать пустым checksumAlgorithm: "". В данном случае контрольная сумма не вычисляется и не будет прикреплена к заголовку запроса в s3.
6 default(тип данных:bool) - флаг установить объектное хранилище по умолчанию (true).7 objectStorage.bucket(тип данных:string) - имя бакета (области хранения, куда будут загружаться резервные копии) для хранения резервных копий.8 provider(тип данных:string) - имя провайдера для подключения к объектному хранилищу.9 credential.name(тип данных:string) - имя секрета доступа к объектному хранилищу.Пример вывода:kubectl create -f backup-storage-location.yaml backupstoragelocation.velero.io/default createdЧерез веб-интерфейс
-
Перейдите в раздел Места хранения резервной копии.
-
Нажмите кнопку Создать место хранения резервной копии.
-
Далее необходимо задать параметры конфигурации. В верхней части интерфейса выберите один из следующих способов:
Через YAML-манифест
На странице с манифестом заполните поля:
Пример и расшифровка полей конфигурационного файла приведен ниже:
apiVersion: velero.io/v1 kind: BackupStorageLocation metadata: labels: app.kubernetes.io/managed-by: Nova name: default (1) namespace: nova-cluster-backup (2) spec: config: region: ru-dc-1 (3) s3Url: https://s3.mycompany.local (4) checksumAlgorithm: "" (5) default: true (6) objectStorage: bucket: velero-backup-bucket (7) provider: aws (8) credential: name: cloud-credentials (9) key: cloud1 metadata.name(тип данных:string) - имя CR BackupStorageLocation.2 metadata.namespace(тип данных:string) - пространство имен, где регистрируется объектное хранилище.3 spec.config.region(тип данных:string) регион для подключения к объектному хранилищу. Заполнение не обязательно.4 s3Url(тип данных:string) - точка подключения к объектному хранилищу.5 checksumAlgorithm(тип данных:string) - поле, определяющее алгоритм рассчета контрольной суммы, который используется для загрузки объектов в s3.Поддерживаемые значения: CRC32, CRC32C, SHA1, SHA256Поле checksumAlgorithm является опциональным. По умолчанию значение равно CRC32.
Если пользовательское s3 хранилище не поддерживает алгоритмы, приведенные выше, поле checksumAlgorithm следует задать пустым checksumAlgorithm: "". В данном случае контрольная сумма не вычисляется и не будет прикреплена к заголовку запроса в s3.
6 default(тип данных:bool) - флаг установить объектное хранилище по умолчанию (true).7 objectStorage.bucket(тип данных:string) - имя бакета (области хранения, куда будут загружаться резервные копии) для хранения резервных копий.8 provider(тип данных:string) - имя провайдера для подключения к объектному хранилищу.9 credential.name(тип данных:string) - имя секрета доступа к объектному хранилищу. ---Через заполнение формы
Некоторые поля спецификации могут не отображаться в этом представлении формы. Пожалуйста, выберите представление YAML для детальной настройки.
-
Заполните поле Имя. Параметр отвечает за имя ресурса BackupStorageLocation. Должно быть уникальным в Namespace (пример:
default). -
Заполните поле Namespace. Параметр отвечает за пространство имен, в котором расположен ресурс BackupStorageLocation (пример:
my-namespace). -
Заполните поле Бакет. Параметр отвечает за область хранения, куда будут загружаться резервные копии (пример:
myBucket). -
Заполните Режим доступа. Данный параметр отвечает за то, как Velero может получить доступ к месту хранения резервных копий. Допустимые значения: ReadWrite, ReadOnly (пример:
ReadOnly) -
Заполните Провайдер - имя поставщика хранилища объектов, который будет использоваться для хранения резервных копий (пример:
aws).
-
-
Нажмите кнопку Создать.
-
-
Проверьте статус регистрации объектного хранилища одним из способов:
Через kubectl
kubectl get backupstoragelocations.velero.io default -n nova-cluster-backupПример вывода:kubectl get backupstoragelocations.velero.io default -n nova-cluster-backup NAME PHASE LAST VALIDATED AGE DEFAULT default Available 47s 47s trueЧерез Velero CLI
velero backup-location getПример вывода:velero backup-location get NAME PROVIDER BUCKET/PREFIX PHASE LAST VALIDATED ACCESS MODE DEFAULT default aws velero-backup-bucket Available 2024-06-10 11:42:05 +0000 UTC ReadWrite trueЗначение PHASE
Availableуказывает на то, что бакет объектного хранилища доступен для хранения резервных копий.Через веб-интерфейс
Перейдите в раздел Места хранения резервной копии.
Статус регистрации места хранения резервных копий можно посмотреть в таблице мест в столбце Фаза. Значение Доступен указывает на то, что бакет объектного хранилища доступен для хранения резервных копий.
На данном этапе настройка хранилища резервных копий завершена, и вы можете перейти к настройкам планов резервного копирования.
3. Восстановление резервных копий узлов
Перед тем, как восстанавливать какой-либо компонент узла или кластера Kubernetes в Nova Container Platform с помощью резервной копии Velero, необходимо сперва восстановить копию сервиса Nova Backup Daemon, в котором хранится резервная копия узлов. Кроме этого, поддерживается сценарий восстановления данных из объектного хранилища без доступа к Velero с помощью Kopia.
В разделах ниже описаны обе процедуры восстановления данных.
3.1. Восстановление данных с помощью Velero
При восстановлении данных с помощью Velero в кластер Kubernetes восстанавливается копия сервиса Nova Backup Daemon, в которой находятся резервные копии узлов. Вы можете перенести данные копии на локальную машину и перейти к восстановлению отдельных компонентов узлов и среды Kubernetes.
-
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
Вы установили утилиту
kubectlдля работы с Kubernetes. -
Вы настроили утилиту velero для работы с резервными копиями Velero.
-
Процесс восстановления можно запустить двумя способами:
Через командную строку
-
Получите список резервных копий и выберете копию для восстановления:
kubectl
kubectl get backups.velero.io -n nova-cluster-backupПример
kubectl get backups.velero.io -n nova-cluster-backup NAME AGE control-plane-backup-20240611101535 145m control-plane-backup-20240611111535 85m control-plane-backup-20240611121535 25mVelero CLI
velero backup getПример
velero backup get NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR control-plane-backup-20240610141525 Completed 0 0 2024-06-10 14:15:25 +0000 UTC 1h default app.kubernetes.io/component=nova-backup-daemon control-plane-backup-20240610131525 Completed 0 0 2024-06-10 13:15:25 +0000 UTC 33m default app.kubernetes.io/component=nova-backup-daemon control-plane-backup-20240610161525 Completed 0 0 2024-06-10 12:15:25 +0000 UTC 26m ago default app.kubernetes.io/component=nova-backup-daemon -
Восстановите выбранную резервную копию в кластер Kubernetes:
velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --namespace-mappings nova-cluster-backup:nova-cluster-restoreДля восстановления резервной копии используйте следующие данные:
-
RESTORE_NAME- имя задания на восстановление резервной копии -
BACKUP_NAME- имя выбранной резервной копииНе изменяйте значение ключа
--namespace-mappingsпри создании задания на восстановление резервной копии. Копия восстанавливается в пространство именnova-cluster-restore, сохраняя работоспособность сервиса Nova Backup Daemon в пространстве именnova-cluster-backup.Пример вывода:velero restore create restore-control-plane-backup-20240610161525 \ --from-backup control-plane-backup-20240610161525 \ --namespace-mappings nova-cluster-backup:nova-cluster-restore Restore request "restore-control-plane-backup-20240610161525" submitted successfully. Run `velero restore describe restore-control-plane-backup-20240610161525` or `velero restore logs restore-control-plane-backup-20240610161525` for more details.
-
-
Проверьте статус задания на восстановление резервной копии:
velero restore get restore-control-plane-backup-20240610161525Пример вывода:velero restore get restore-control-plane-backup-20240610161525 NAME BACKUP STATUS STARTED COMPLETED ERRORS WARNINGS CREATED SELECTOR restore-control-plane-backup-20240610161525 control-plane-backup-20240610161525 Completed 2024-06-11 15:33:51 +0000 UTC 2024-06-11 15:33:57 +0000 UTC 0 3 2024-06-11 15:33:51 +0000 UTC <none>
Через веб-интерфейс
-
Для создания восстановления перейдите в раздел Восстановления.
-
Нажмите на кнопку Создать восстановление
-
Далее необходимо задать параметры конфигурации. В верхней части интерфейса выберите один из следующих способов:
Через YAML-манифест
На странице с манифестом заполните поля:
Пример и расшифровка полей конфигурационного файла приведен ниже:
apiVersion: velero.io/v1 kind: Restore metadata: name: nova-restore-redis (1) namespace: nova-cluster-backup (2) spec: backupName: nova-backup-redis (3) itemOperationTimeout: 4h includedNamespaces: (4) - 'nova-redis' includedResources: (5) - 'configmap' - 'pods' labelSelector: (6) matchLabels: app: redis namespaceMapping: (7) namespace-backup-from: nova-redis restorePVs: true preserveNodePorts: true1 metadata.name(тип данных:string) - имя ресурса Restore. Должно быть уникальным в пространстве имен (Namespace). Заполнение обязательно.2 metadata.namespce(тип данных:string) - пространство имен, в котором расположен ресурс Restore. Заполнение обязательно.3 spec.backupName(тип данных:string) - уникальное имя резервной копии, из которой выполняется восстановление. Заполнение обязательно.4 spec.includedNamespaces(тип данных:[]string) - массив пространств имен для включения в восстановление.*или если не указан, включает все пространства имен. Заполнение необязательно.5 spec.includedResources(тип данных:[]string) - массив ресурсов для включения в восстановление.*или если не указан, включает все ресурсы. Заполнение необязательно.6 spec.labelSelector(тип данных:object (map)). Задает критерии выбора объектов по меткам. Только объекты, полностью соответствующие этим критериям, будут включены в восстановление. Заполнение необязательно.7 spec.namespaceMapping(тип данных:object (map)) - сопоставление исходных и целевых namespace при восстановлении. Не указанные namespace восстанавливаются с исходными именами. Заполнение обязательно.
Через заполнение формы
Некоторые поля спецификации могут не отображаться в этом представлении формы. Пожалуйста, выберите представление YAML для детальной настройки.
-
Заполните поле Имя. Параметр отвечает за имя ресурса Restore. Должно быть уникальным в Namespace (пример:
a-very-special-backup). -
Заполните поле Namespace. Параметр отвечает за пространство имен, в котором расположен ресурс Restore (пример:
my-namespace). -
Перейдите ко вкладке Резервная копия → Расписание → Резервная копия. Выберите в поле Имя резервной копии/Имя расписания источник для восстановления данных (пример:
a-very-special-backup-0). -
Необязательно. Заполните поле Включить ресурсы массивом ресурсов для включения в востановление.
*или если не указан, включает все ресурсы. -
Необязательно. Заполните поле Селектор меток (AND). Данный параметр задает критерии выбора объектов по меткам. Только объекты, полностью соответствующие этим критериям, будут включены в восстановление (пример:
app=velero). -
Заполните Таймаут операции - время ожидания асинхронных операций
BackupItemAction. Значение по умолчанию - 4 часа (пример:4h).
-
-
Нажмите на кнопку Создать.
-
-
Получите список Pod’ов сервиса Nova Backup Daemon в пространстве имен
nova-cluster-restore:kubectl get pods -n nova-cluster-restoreПример вывода:kubectl get pods -n nova-cluster-restore NAME READY STATUS RESTARTS AGE nova-backup-daemon-2xf9p 1/1 Running 0 78s nova-backup-daemon-s5zws 1/1 Running 0 78s nova-backup-daemon-z4lmn 1/1 Running 0 77s -
Скопируйте резервные копии узлов с каждого из Pod:
PODNAME=<POD_NAME>; \ for file in $(kubectl exec $PODNAME -n nova-cluster-restore -c backup-daemon -- ls /opt/backup); \ do kubectl cp -c backup-daemon nova-cluster-restore/$PODNAME:/opt/backup/$file $PWD/$file; doneВ качестве
<POD_NAME>укажите имя Pod сервиса Nova Backup Daemon.Пример вывода:PODNAME=nova-backup-daemon-2xf9p; \ for file in $(kubectl exec $PODNAME -n nova-cluster-restore -c backup-daemon -- ls /opt/backup); \ do kubectl cp -c backup-daemon nova-cluster-restore/$PODNAME:/opt/backup/$file $PWD/$file; doneФайлы резервной копии будут сохранены в текущую директорию на локальной машине пользователя.
-
Проверьте список полученных файлов:
Пример вывода:ls -la drwxr-xr-x. 2 root root 4096 Jun 11 19:09 . drwxr-xr-x. 7 root root 4096 Jun 11 18:39 .. -rw-r--r--. 1 root root 68989925 Jun 11 19:09 etcd_snapshot_nova-v6.2.0_k8s-v1.27.11_2024-06-11_050616.db.tar.gz -rw-r--r--. 1 root root 33970260 Jun 11 19:09 nova-master-1-nova-internal_kuberesources_2024-06-11_050616.tar.gz -rw-r--r--. 1 root root 33971757 Jun 11 19:08 nova-master-2-nova-internal_kuberesources_2024-06-11_050535.tar.gz -rw-r--r--. 1 root root 33973476 Jun 11 19:08 nova-master-3-nova-internal_kuberesources_2024-06-11_050556.tar.gz -rw-r--r--. 1 root root 375225 Jun 11 19:09 starvault_snapshot_nova-v6.2.0_2024-06-11_050616.db -
После восстановления резервной копии сервиса Nova Backup Daemon удалите задание на восстановление:
velero restore delete <RESTORE_NAME>В качестве
<RESTORE_NAME>укажите имя задания на восстановление резервной копии, которое необходимо удалить.Пример вывода:velero restore delete restore-control-plane-backup-20240610161525 Are you sure you want to continue (Y/N)? y Request to delete restore "restore-control-plane-backup-20240610161525" submitted successfully. The restore will be fully deleted after all associated data (restore files in object storage) are removed.Также удалите восстановленный сервис Nova Backup Daemon:
Пример вывода:kubectl delete ds -n nova-cluster-restore nova-backup-daemon
3.2. Восстановление данных c помощью Kopia
Для восстановления данных из объектного хранилища напрямую без участия Velero вам необходимо будет подключиться к репозиторию резервных копий Kopia с помощью утилиты Kopia CLI. Данный репозиторий инициализируется с помощью Velero автоматически в процессе настройки резервного копирования. Вы сможете получить файлы, которые были подготовлены сервисом Nova Backup Daemon. Имея данные файлы, вы сможете перейти к восстановлению отдельных компонентов узлов и среды Kubernetes.
Необходимые условия
-
Вы установили утилиту Kopia CLI.
-
У вас есть ключ шифрования резервных копий.
-
У вас есть доступ к бакету в объектном хранилище, где сохранены резервные копии.
-
Подключитесь к хранилищу резервных копий с помощью Kopia CLI:
kopia repository connect s3 \ --access-key=<AWS_ACCESS_KEY_ID> \ --secret-access-key=<AWS_SECRET_ACCESS_KEY> \ --bucket=<BUCKET_NAME> \ --prefix=kopia/<BACKUP_NAME>/ \ --endpoint=<S3_ENDPOINT_URL> Enter password to open repository: <ENCRYPTION_PASSWORD>Для подключения используйте следующие данные:
-
AWS_ACCESS_KEY_IDиAWS_SECRET_ACCESS_KEY- учетные данные для подключения к объектному хранилищу -
BUCKET_NAME- имя бакета для хранения резервных копий. -
S3_ENDPOINT_URL- точка подключения к объектному хранилищу без указания протокола.Пример вывода:kopia repository connect s3 \ --access-key="ASIAIOSFODNN7EXAMPLE" \ --secret-access-key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ --bucket=velero-backup-bucket \ --prefix=kopia/<BACKUP_NAME>/ \ --endpoint=s3.mycompany.local Enter password to open repository: ******** Connected to repository.
-
-
Получите список идентификаторов снапшотов в хранилище резервных копий:
kopia snapshot list --all -lПример вывода:kopia snapshot list –all -l default@default:/host_pods/1eeb2ac9-36de-4a9c-a1d1-a0ac4618f6fd/volumes/kubernetes.io~empty-dir/backup-volume 2024-06-11 12:15:40 MSK k702d957ec030e814fbc61bcd63d2d316 34 MB drwxrwxrwx files:1 dirs:1 (latest-3,hourly-3) pins:velero-pin 2024-06-11 13:15:40 MSK kf576cc276650d10920e96b48d162ea5a 34 MB drwxrwxrwx files:1 dirs:1 (latest-2,hourly-2) pins:velero-pin 2024-06-11 14:15:40 MSK k2d67a575200c57344846b221c36e9bd6 34 MB drwxrwxrwx files:1 dirs:1 (latest-1,hourly-1,daily-1,weekly-1,monthly-1,annual-1) pins:velero-pin default@default:/host_pods/4f4aaa17-da1a-4c30-a587-535604a991b1/volumes/kubernetes.io~empty-dir/backup-volume 2024-06-11 12:15:57 MSK kfcafeadd427239980e47f4eceeed244a 94.2 MB drwxrwxrwx files:3 dirs:1 (latest-3,hourly-3) pins:velero-pin 2024-06-11 13:15:58 MSK k31d18913f2a147722f292609b987ad15 93.3 MB drwxrwxrwx files:3 dirs:1 (latest-2,hourly-2) pins:velero-pin 2024-06-11 14:15:58 MSK k570cf06adf55dbf2e87b2959f148c3b2 92.3 MB drwxrwxrwx files:3 dirs:1 (latest-1,hourly-1,daily-1,weekly-1,monthly-1,annual-1) pins:velero-pin default@default:/host_pods/fd076d09-d8f6-480e-addf-03f3fa33f633/volumes/kubernetes.io~empty-dir/backup-volume 2024-06-11 12:15:47 MSK kf3872b5f18ef1fd536fe1d75cb2fa160 34 MB drwxrwxrwx files:1 dirs:1 (latest-3,hourly-3) pins:velero-pin 2024-06-11 13:15:47 MSK k7113f38a1b63f03caf4ca1cb179550fb 34 MB drwxrwxrwx files:1 dirs:1 (latest-2,hourly-2) pins:velero-pin 2024-06-11 14:15:47 MSK kc950a4ee5808557fe2c3d01df22ff4e3 34 MB drwxrwxrwx files:1 dirs:1 (latest-1,hourly-1,daily-1,weekly-1,monthly-1,annual-1) pins:velero-pin +В выводе команды отображен список резервных копий томов
backup-volumeдля трех разных Pod сервиса Nova Backup Daemon, имеющих UID:-
1eeb2ac9-36de-4a9c-a1d1-a0ac4618f6fd -
4f4aaa17-da1a-4c30-a587-535604a991b1 -
fd076d09-d8f6-480e-addf-03f3fa33f633Для того, чтобы проверить соответствие данных резервных копий узлам в Kubernetes, вы можете выполнить команду:
kubectl get pod -l app.kubernetes.io/component=nova-backup-daemon -n nova-cluster-backup \ -o custom-columns=PodName:.metadata.name,UID:.metadata.uid,NODE:.spec.nodeNameПример вывода:kubectl get pod -l app.kubernetes.io/component=nova-backup-daemon -n nova-cluster-backup \ -o custom-columns=PodName:.metadata.name,UID:.metadata.uid,NODE:.spec.nodeName PodName UID NODE nova-backup-daemon-2xf9p 1eeb2ac9-36de-4a9c-a1d1-a0ac4618f6fd nova-master-2.mycompany.local nova-backup-daemon-s5zws fd076d09-d8f6-480e-addf-03f3fa33f633 nova-master-3.mycompany.local nova-backup-daemon-z4lmn 4f4aaa17-da1a-4c30-a587-535604a991b1 nova-master-1.mycompany.local
-
-
Восстановите необходимую резервную копию:
kopia snapshot restore <SNAPSHOT_ID>В качестве
SNAPSHOT_IDукажите тот идентификатор снапшота, временная метка которого соответствует требуемой точке восстановления.Пример вывода:kopia snapshot restore k570cf06adf55dbf2e87b2959f148c3b2 Restoring to local filesystem (/root/k570cf06adf55dbf2e87b2959f148c3b2) with parallelism=8... Processed 4 (92.3 MB) of 3 (92.3 MB) 69.9 MB/s (100.0%) remaining 0s. Processed 4 (92.3 MB) of 3 (92.3 MB) 69.9 MB/s (100.0%) remaining 0s. Restored 3 files, 1 directories and 0 symbolic links (92.3 MB). -
Проверьте восстановленные данные:
Пример вывода:ls -la /root/k570cf06adf55dbf2e87b2959f148c3b2/ итого 90160 drwxrwxrwx. 2 root root 4096 Jun 11 14:15 . dr-xr-x---. 89 root root 4096 Jun 11 14:50 .. -rw-r--r--. 1 root root 58044113 Jun 11 14:15 etcd_snapshot_nova-v6.2.0_k8s-v1.27.11_2024-06-11_111549.db.tar.gz -rw-------. 1 root root 33970429 Jun 11 14:15 nova-master-1-nova-internal_kuberesources_2024-06-11_111549.tar.gz -rw-------. 1 root root 292009 Jun 11 14:15 starvault_snapshot_nova-v6.2.0_2024-06-11_111549.dbДля архивов резервных копий применяется следующая схема именования:
-
Имя архива резервной копии Etcd имеет формат
etcd_snapshot_nova-<Версия Nova>_k8s-<Версия Kubernetes>_<Время создания копии>.db.tar.gz. -
Имена архивов резервных копий конфигураций узлов имеют формат
<Имя узла в Kubernetes>_kuberesources_<Время создания копии>.tar.gz. -
Имя архива резервной копии StarVault имеет формат
starvault_snapshot_nova-<Версия Nova>_<Время создания копии>1.db.Резервная копия только одного из узлов включает копии Etcd и StarVault.
-
-
Повторите действия по восстановлению для оставшихся Pod’ов сервиса Nova Backup Daemon.
-
Отключитесь от хранилища резервных копий:
kopia repository disconnect
|
В настоящее время в Velero используется общий статический ключ шифрования для всех создаваемых репозиториев резервного копирования. Это означает, что любой, кто имеет доступ к вашему хранилищу резервных копий, может расшифровать ваши резервные копии. Обязательно ограничьте доступ к хранилищу резервных копий соответствующим образом. |