Резервное копирование вручную
Используйте аддон Velero, чтобы вручную создавать резервные копии данных кластера и восстанавливать их.
- Создайте кластер Kubernetes актуальной версии, если это еще не сделано.
- Убедитесь, что вы можете подключиться к кластеру с помощью
kubectl. - Установите OpenStack CLI, если это еще не сделано. Убедитесь, что вы можете авторизоваться в облаке с его помощью.
- Установите аддон Velero, если это еще не сделано.
Чтобы познакомиться с созданием резервной копии и восстановлением из нее, создайте демоприложение coffee. К этому приложению будет подключен постоянный том (persistent volume).
-
Создайте файл манифеста с указанием класса хранения в зоне доступности, где расположена ваша группа worker-узлов:
-
Примените манифест в кластере:
kubectl apply -f coffee.yamlМанифест создаст все необходимые для работы приложения ресурсы Kubernetes в пространстве имен
example-app. -
Убедитесь, что создан диск для постоянного тома:
-
Найдите созданный для приложения постоянный том:
kubectl get pv -n example-appВ выводе найдите идентификатор постоянного тома, у которого в столбце
CLAIMуказаноexample-app/coffee-pvc. Пример вывода команды:NAME ... STATUS CLAIM ...... ... ... ... ...<ID_ПОСТОЯННОГО_ТОМА> ... Bound example-app/coffee-pvc ... -
Получите идентификатор диска для созданного постоянного тома:
kubectl describe pv <ID_ПОСТОЯННОГО_ТОМА> -n example-appВ выводе команды будет содержаться идентификатор диска в параметре
VolumeHandle. Пример вывода:...Source:Type: CSI (a Container Storage Interface (CSI) volume source)Driver: cinder.csi.openstack.orgFSType: ...VolumeHandle: <ID_ДИСКА>... -
Получите подробную информацию о диске с таким идентификатором, используя OpenStack CLI:
openstack volume show <ID_ДИСКА> --fit-width
-
-
Дождитесь, когда балансировщику будет назначен Floating IP-адрес.
Периодически проверяйте статус балансировщика:
kubectl get svc -n example-appВ столбце
EXTERNAL-IPдолжен появиться Floating IP-адрес, назначенный балансировщику. -
Убедитесь, что NGINX отвечает на запросы:
curl <FLOATING_IP_АДРЕС_БАЛАНСИРОВЩИКА>Ожидаемый вывод:
The coffee pod says Hello World to everyone! This file is located on the dynamically claimed Cinder ReadWriteOnce persistent volume.
-
Создайте манифест
coffee-backup.yaml:apiVersion: velero.io/v1kind: Backupmetadata:name: coffee-backupnamespace: velerospec:includedNamespaces:- example-app -
Примените манифест в кластере:
kubectl apply -f coffee-backup.yamlЭтот манифест создает ручную резервную копию всего пространства имен
example-app, в котором находятся нужные для работы приложения ресурсы. Время жизни созданной резервной копии по умолчанию – 72 часа. По истечении этого времени резервная копия будет удалена. -
(Опционально) Настройте расписание для автоматического создания резервных копий.
-
Имитируйте отказ приложения. Для этого удалите пространство имен
example-app, в котором находятся ресурсы, необходимые для работы приложения:kubectl delete ns example-app -
Создайте манифест
coffee-restore.yaml:apiVersion: velero.io/v1kind: Restoremetadata:name: coffee-restorenamespace: velerospec:backupName: coffee-backup -
Примените манифест в кластере:
kubectl apply -f coffee-restore.yamlЭтот манифест восстанавливает ресурсы из резервной копии, которая была создана ранее. Данные восстанавливаются в том же кластере, в котором было выполнено резервное копирование. Если нужно восстановить данные в новый кластер:
- Создайте кластер.
- Установите аддон Velero в кластер.
- Создайте и примените манифест
coffee-restore.yaml.
-
Удалите аннотацию с идентификатором балансировщика нагрузки, которая осталась после восстановления резервной копии:
kubectl -n example-app annotate service coffee-svc loadbalancer.openstack.org/load-balancer-id-После этого будет создан новый балансировщик нагрузки.
-
Дождитесь, когда балансировщику будет назначен Floating IP-адрес.
Периодически проверяйте статус балансировщика:
kubectl get svc -n example-appВ столбце
EXTERNAL-IPдолжен появиться Floating IP-адрес, назначенный балансировщику. -
Убедитесь, что NGINX отвечает на запросы:
curl <FLOATING_IP_АДРЕС_БАЛАНСИРОВЩИКА>Ожидаемый вывод:
The coffee pod says Hello World to everyone! This file is located on the dynamically claimed Cinder ReadWriteOnce persistent volume.
Работающий кластер тарифицируется и потребляет вычислительные ресурсы. Если ресурсы Kubernetes, созданные для проверки резервного копирования с помощью аддона Velero, вам больше не нужны, удалите их:
-
Удалите созданное пространство имен
example-appи связанные с ним ресурсы, а также созданную резервную копию:Linux/macOSWindowskubectl delete ns example-app -
(Опционально) Удалите пространство имен
velero. Для этого:-
Удалите созданные экземпляры ресурсов, относящиеся к Custom Resource Definitions (CRD) аддона.
-
Выполните команду:
Linux/macOSWindowskubectl delete ns velero
-
-
Удалите резервные копии из бакета, который использовался аддоном Velero.
При необходимости также удалите сам бакет.
-
Остановите созданный кластер, чтобы воспользоваться им позже, или удалите его навсегда.