[.note] #Note: Проект Ark был переименован вVelero и внес несколько изменений в v0.11.0. Это руководство скоро будет обновлено, чтобы включить эти изменения. Благодарим за терпение!
#
Вступление
Heptio Ark - удобный инструмент резервного копирования для кластеров Kubernetes, который сжимает и выполняет резервное копирование объектов Kubernetes в хранилище объектов. Он также делает снимки постоянных томов вашего кластера с использованием функций снимков блоков хранилища вашего облачного провайдера, а затем может восстановить объекты кластера и постоянные тома в прежнее состояние.
DigitalOcean Ark Plugin в StackPointCloud позволяет использовать блочное хранилище DigitalOcean для создания моментальных снимков постоянных томов и пространств для резервного копирования объектов Kubernetes. При запуске кластера Kubernetes в DigitalOcean это позволяет быстро создать резервную копию состояния кластера и восстановить его в случае аварии.
В этом руководстве мы настроим и настроим клиент Ark на локальном компьютере и развернем сервер Ark в нашем кластере Kubernetes. Затем мы развернем пример приложения Nginx, в котором для ведения журнала используется постоянный том, и смоделируем сценарий аварийного восстановления.
Предпосылки
Перед тем, как вы начнете этот урок, у вас должно быть следующее:
На вашем локальном компьютере:
-
Инструмент командной строки
kubectl
, настроенный для подключения к вашему кластеру. Вы можете узнать больше об установке и настройкеkubectl
вofficial Kubernetes documentation. -
Утилита командной строки
git
. Вы можете узнать, как установитьgit
вGetting Started with Git.
В вашей учетной записи DigitalOcean:
-
КластерDigitalOcean Kubernetes или кластер Kubernetes (версия
1.7.5
или новее) на DigitalOcean Droplets -
DNS-сервер, работающий внутри вашего кластера. Если вы используете DigitalOcean Kubernetes, он работает по умолчанию. Чтобы узнать больше о настройке службы Kubernetes DNS, обратитесь кCustomizing DNS Service из официальной документации Kuberentes.
-
DigitalOcean Space, в котором будут храниться ваши резервные копии объектов Kubernetes. Чтобы узнать, как создать пространство, обратитесь кthe Spaces product documentation.
-
Пара ключей доступа для вашего DigitalOcean Space. Чтобы узнать, как создать набор ключей доступа, обратитесь кHow to Manage Administrative Access to Spaces.
-
Персональный токен доступа для использования с API DigitalOcean. Чтобы узнать, как создать личный токен доступа, обратитесь кHow to Create a Personal Access Token.
Как только вы все это настроите, вы готовы начать с этого руководства.
[[step-1 -—- install-the-ark-client]] == Шаг 1. Установка клиента Ark
Средство резервного копирования Heptio Ark состоит из клиента, установленного на локальном компьютере, и сервера, который работает в вашем кластере Kubernetes. Для начала мы установим локальный клиент Ark.
В своем веб-браузере перейдите к репозиторию Ark / Velero GitHubreleases page, найдите выпуск, соответствующий вашей ОС и архитектуре системы, и скопируйте адрес ссылки. Для целей этого руководства мы будем использовать сервер Ubuntu 18.04 на процессоре x86-64 (или AMD64) в качестве нашей локальной машины и версию Arkv0.10.0
.
[.note] #Note: Чтобы следовать этому руководству, вы должны загрузить и установитьv0.10.0 клиента Ark.
#
Затем из командной строки на вашем локальном компьютере перейдите во временный каталог/tmp
и перейдите в негоcd
:
cd /tmp
Используйтеwget
и ссылку, которую вы скопировали ранее, чтобы загрузить архив релиза:
wget https://link_copied_from_release_page
После завершения загрузки распакуйте архив с помощьюtar
(обратите внимание, что имя файла может отличаться в зависимости от версии выпуска и вашей ОС):
tar -xvzf ark-v0.10.0-linux-amd64.tar.gz
Каталог/tmp
теперь должен содержать извлеченный двоичный файлark
, а также только что загруженный архив.
Убедитесь, что вы можете запустить клиентark
, выполнив двоичный файл:
./ark --help
Вы должны увидеть следующий вывод справки:
OutputHeptio Ark is a tool for managing disaster recovery, specifically for Kubernetes
cluster resources. It provides a simple, configurable, and operationally robust
way to back up your application state and associated data.
If you're familiar with kubectl, Ark supports a similar model, allowing you to
execute commands such as 'ark get backup' and 'ark create schedule'. The same
operations can also be performed as 'ark backup get' and 'ark schedule create'.
Usage:
ark [command]
Available Commands:
backup Work with backups
client Ark client related commands
completion Output shell completion code for the specified shell (bash or zsh)
create Create ark resources
delete Delete ark resources
describe Describe ark resources
get Get ark resources
help Help about any command
plugin Work with plugins
restic Work with restic
restore Work with restores
schedule Work with schedules
server Run the ark server
version Print the ark version and associated image
. . .
На этом этапе вы должны переместить исполняемый файлark
из временного каталога/tmp
и добавить его в свойPATH
. Чтобы добавить его вPATH
в системе Ubuntu, просто скопируйте его в/usr/local/bin
:
sudo mv ark /usr/local/bin/ark
Теперь вы готовы настроить сервер Ark и развернуть его в своем кластере Kubernetes.
[[step-2 -—- install-and-configuring-the-ark-server]] == Шаг 2 - Установка и настройка сервера Ark
Прежде чем развернуть Ark в нашем кластере Kubernetes, мы сначала создадим необходимые объекты Ark. Предпосылки Арка состоят из:
-
Пространство имен A
heptio-ark
-
Учетная запись службы
ark
-
Правила управления доступом на основе ролей (RBAC) для предоставления разрешений учетной записи службы
ark
-
Пользовательские ресурсы (CRD) для ресурсов, специфичных для Ark:
Backup
,Schedule
,Restore
,Config
Файл манифеста YAML, содержащий определения вышеупомянутых объектов Kubernetes, можно найти в папкеArk source code. Пока вы все еще находитесь в каталоге/tmp
, загрузите tarball с исходным кодом, соответствующий ранее загруженной вами версии выпуска клиента. В этом руководстве этоv0.10.0
:
wget https://github.com/heptio/velero/archive/v0.10.0.tar.gz
Теперь распакуйте архив с помощьюtar
(обратите внимание, что имя файла может отличаться в зависимости от версии выпуска):
tar -xvzf v0.10.0.tar.gz
После загрузки перейдите в каталогvelero-0.10.0
:
cd velero-0.10.0
Перечисленные выше необходимые ресурсы можно найти в YAML-файлеexamples/common/00-prereqs.yaml
. Мы создадим эти ресурсы в нашем кластере Kubernetes, используяkubectl apply
и передав файл:
kubectl apply -f examples/common/00-prereqs.yaml
Вы должны увидеть следующий вывод:
Outputcustomresourcedefinition.apiextensions.k8s.io/backups.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/schedules.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/restores.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/downloadrequests.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/deletebackuprequests.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/podvolumebackups.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/podvolumerestores.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/resticrepositories.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/backupstoragelocations.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/volumesnapshotlocations.ark.heptio.com created
namespace/heptio-ark created
serviceaccount/ark created
clusterrolebinding.rbac.authorization.k8s.io/ark created
Теперь, когда мы создали необходимые объекты Ark Kubernetes в нашем кластере, мы можем загрузить и установитьArk DigitalOcean Plugin, что позволит нам использовать DigitalOcean Spaces какbackupStorageProvider
(для объектов Kubernetes) и DigitalOcean. Блокировать хранилище какpersistentVolumeProvider
(для резервных копий постоянных томов).
Вернитесь из каталогаvelero-0.10.0
и загрузите версиюv0.10.0
плагина. Вы можете найти релизные версии плагина в плагине StackPointCloud DigitalOceanreleases page.
cd ..
wget https://github.com/StackPointCloud/ark-plugin-digitalocean/archive/v0.10.0.tar.gz
Теперь извлеките архив с помощьюtar
(обратите внимание, что имя файла может отличаться в зависимости от версии выпуска и может заканчиваться.1
, если вы не удалили предыдущий архивv0.10.0.tar.gz
, содержащий Velero исходный код клиент / сервер):
tar -xvzf v0.10.0.tar.gz.1
Перейдите в каталог плагинов:
cd ark-plugin-digitalocean-0.10.0
Теперь мы сохраним ключи доступа для нашего пространства DigitalOcean как KubernetesSecret. Сначала откройте файлexamples/credentials-ark
в своем любимом редакторе:
nano examples/credentials-ark
Замените<AWS_ACCESS_KEY_ID>
и<AWS_SECRET_ACCESS_KEY>
на свой ключ доступа к Spaces и секретный ключ:
examples/credentials-ark
[default]
aws_access_key_id=your_spaces_access_key_here
aws_secret_access_key=your_spaces_secret_key_here
Сохраните и закройте файл.
Теперь создайте секретcloud-credentials
с помощьюkubectl
, вставив свой токен личного доступа API с помощью параметраdigitalocean_token
:
kubectl create secret generic cloud-credentials \
--namespace heptio-ark \
--from-file cloud=examples/credentials-ark \
--from-literal digitalocean_token=your_personal_access_token
Вы должны увидеть следующий вывод:
Outputsecret/cloud-credentials created
Чтобы подтвердить, что секретcloud-credentials
был успешно создан, вы можетеdescribe
использоватьkubectl
:
kubectl describe secrets/cloud-credentials --namespace heptio-ark
Вы должны увидеть следующий вывод, описывающий секретcloud-credentials
:
OutputName: cloud-credentials
Namespace: heptio-ark
Labels:
Annotations:
Type: Opaque
Data
====
cloud: 115 bytes
digitalocean_token: 64 bytes
Теперь мы можем перейти к созданию объекта ArkBackupStorageLocation
с именемdefault
, который будет настраивать серверную часть хранилища объектов плагина. Для этого мы отредактируем файл манифеста YAML, а затем создадим объект в нашем кластере Kubernetes.
Откройтеexamples/05-ark-backupstoragelocation.yaml
в своем любимом редакторе:
nano examples/05-ark-backupstoragelocation.yaml
Введите название своего пространства и регион в выделенные поля:
examples/05-ark-backupstoragelocation.yaml
. . .
---
apiVersion: ark.heptio.com/v1
kind: BackupStorageLocation
metadata:
name: default
namespace: heptio-ark
spec:
provider: aws
objectStorage:
bucket: space_name_here
config:
s3Url: https://space_region_here.digitaloceanspaces.com
region: space_region_here
Когда вы закончите, сохраните и закройте файл.
Создайте объект в своем кластере, используяkubectl apply
:
kubectl apply -f examples/05-ark-backupstoragelocation.yaml
Вы должны увидеть следующий вывод:
Outputbackupstoragelocation.ark.heptio.com/default created
Вам не нужно повторять эту процедуру для объектаVolumeSnapshotLocation
, который настраивает серверную часть блочного хранилища. Он уже предварительно настроен с соответствующими параметрами. Чтобы проверить их, откройтеexamples/06-ark-volumesnapshotlocation.yaml
в редакторе:
nano examples/06-ark-volumesnapshotlocation.yaml
examples/06-ark-volumesnapshotlocation.yaml
. . .
---
apiVersion: ark.heptio.com/v1
kind: VolumeSnapshotLocation
metadata:
name: default
namespace: heptio-ark
spec:
provider: digitalocean-blockstore
Когда вы закончите, закройте файл.
Создайте объект в своем кластере, используяkubectl apply
:
kubectl apply -f examples/06-ark-volumesnapshotlocation.yaml
Outputvolumesnapshotlocation.ark.heptio.com/default created
На этом мы закончили настройку сервера Ark и можем создать его развертывание Kubernetes, которое находится в файле конфигурацииexamples/10-deployment.yaml
. Давайте кратко рассмотрим этот файл:
cat examples/10-deployment.yaml
Вы должны увидеть следующий текст:
examples/10-deployment.yaml
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
namespace: heptio-ark
name: ark
spec:
replicas: 1
template:
metadata:
labels:
component: ark
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8085"
prometheus.io/path: "/metrics"
spec:
restartPolicy: Always
serviceAccountName: ark
containers:
- name: ark
image: gcr.io/heptio-images/ark:latest
command:
- /ark
args:
- server
- --default-volume-snapshot-locations=digitalocean-blockstore:default
volumeMounts:
- name: cloud-credentials
mountPath: /credentials
- name: plugins
mountPath: /plugins
- name: scratch
mountPath: /scratch
env:
- name: AWS_SHARED_CREDENTIALS_FILE
value: /credentials/cloud
- name: ARK_SCRATCH_DIR
value: /scratch
- name: DIGITALOCEAN_TOKEN
valueFrom:
secretKeyRef:
key: digitalocean_token
name: cloud-credentials
volumes:
- name: cloud-credentials
secret:
secretName: cloud-credentials
- name: plugins
emptyDir: {}
- name: scratch
emptyDir: {}
Здесь мы видим, что мы создаем развертывание под названиемark
, которое состоит из единственной реплики контейнераgcr.io/heptio-images/ark:latest
. Pod настроен с использованием секретаcloud-credentials
, который мы создали ранее.
Создайте развертывание, используяkubectl apply
:
kubectl apply -f examples/10-deployment.yaml
Вы должны увидеть следующий вывод:
Outputdeployment.apps/ark created
Мы можем дважды проверить, что развертывание было успешно создано, используяkubectl get
в пространстве именheptio-ark
:
kubectl get deployments --namespace=heptio-ark
Вы должны увидеть следующий вывод:
OutputNAME READY UP-TO-DATE AVAILABLE AGE
ark 1/1 1 1 7s
Модуль сервера Ark может не запуститься правильно, пока вы не установите плагин Ark DigitalOcean. Чтобы установить плагинark-blockstore-digitalocean
, используйте клиентark
, который мы установили ранее:
ark plugin add quay.io/stackpoint/ark-blockstore-digitalocean:v0.10.0
Вы можете указатьkubeconfig
для использования с флагом--kubeconfig
. Если вы не используете этот флаг,ark
проверит переменную средыKUBECONFIG
, а затем вернется к значению по умолчаниюkubectl
(~/.kube/config
).
На данный момент Ark работает и полностью настроена, и готова к резервному копированию и восстановлению объектов кластера Kubernetes и постоянных томов в пространствах DigitalOcean и блочных хранилищах.
В следующем разделе мы запустим быстрый тест, чтобы убедиться, что функции резервного копирования и восстановления работают должным образом.
[[step-3 -—- testing-backup-and-restore-procedure]] == Шаг 3 - Проверка процедуры резервного копирования и восстановления
Теперь, когда мы успешно установили и настроили Ark, мы можем создать тестовое развертывание Nginx, постоянный том и сервис и выполнить пробное копирование и восстановление, чтобы убедиться, что все работает правильно.
Репозиторийark-plugin-digitalocean
содержит образец манифеста Nginx с именемnginx-pv.yaml
.
Откройте этот файл, используя выбранный вами редактор:
nano examples/nginx-pv.yaml
Вы должны увидеть следующий текст:
Output---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nginx-logs
namespace: nginx-example
labels:
app: nginx
spec:
storageClassName: do-block-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx-example
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
volumes:
- name: nginx-logs
persistentVolumeClaim:
claimName: nginx-logs
containers:
- image: nginx:1.7.9
name: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/log/nginx"
name: nginx-logs
readOnly: false
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: my-nginx
namespace: nginx-example
spec:
ports:
- port: 80
targetPort: 80
selector:
app: nginx
type: LoadBalancer
В этом файле мы наблюдаем спецификации для:
-
Развертывание Nginx, состоящее из одной реплики образа контейнера
nginx:1.7.9
-
Заявление на постоянный том 5Gi (называемое
nginx-logs
) с использованием StorageClassdo-block-storage
-
Служба
LoadBalancer
, которая предоставляет порт80
Обновите версию образаnginx
до1.14.2
:
Output. . .
containers:
- image: nginx:1.14.2
name: nginx
ports:
- containerPort: 80
volumeMounts:
. . .
Когда вы закончите, сохраните и закройте файл.
Создайте объекты, используяkubectl apply
:
kubectl apply -f examples/nginx-pv.yml
Вы должны увидеть следующий вывод:
Outputnamespace/nginx-example created
persistentvolumeclaim/nginx-logs created
deployment.apps/nginx-deployment created
service/my-nginx created
Убедитесь, что развертывание прошло успешно:
kubectl get deployments --namespace=nginx-example
Вы должны увидеть следующий вывод:
OutputNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-deployment 1 1 1 1 1h
Как толькоAvailable
достигнет 1, получите внешний IP-адрес балансировщика нагрузки Nginx, используяkubectl get
:
kubectl get services --namespace=nginx-example
Вы должны увидеть внутренниеCLUSTER-IP
иEXTERNAL-IP
для службыmy-nginx
:
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx LoadBalancer 10.32.27.0 203.0.113.0 80:30754/TCP 3m
Обратите внимание наEXTERNAL-IP
и перейдите к нему с помощью своего веб-браузера.
Вы должны увидеть следующую страницу приветствия NGINX:
Это указывает на то, что ваше Nginx Deployment and Service запущено и работает.
Прежде чем мы смоделируем наш сценарий бедствия, давайте сначала проверим журналы доступа Nginx (хранящиеся на постоянном томе, подключенном к модулю Nginx):
Получить имя модуля с помощьюkubectl get
:
kubectl get pods --namespace nginx-example
OutputNAME READY STATUS RESTARTS AGE
nginx-deployment-77d8f78fcb-zt4wr 1/1 Running 0 29m
Теперьexec
в работающий контейнер Nginx, чтобы внутри него была оболочка:
kubectl exec -it nginx-deployment-77d8f78fcb-zt4wr --namespace nginx-example -- /bin/bash
Оказавшись внутри контейнера Nginx,cat
журналы доступа Nginx:
cat /var/log/nginx/access.log
Вы должны увидеть некоторые записи доступа Nginx:
Output10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://203.0.113.0/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
Запишите их (особенно отметки времени), так как мы будем использовать их для подтверждения успешности процедуры восстановления.
Теперь мы можем выполнить процедуру резервного копирования, чтобы скопировать все объекты Kubernetesnginx
в пространства и сделать снимок постоянного тома, который мы создали при развертывании Nginx.
Мы создадим резервную копию с именемnginx-backup
, используя клиентark
:
ark backup create nginx-backup --selector app=nginx
--selector app=nginx
указывает серверу Ark выполнять резервное копирование только объектов Kubernetes с помощью селектора метокapp=nginx
.
Вы должны увидеть следующий вывод:
OutputBackup request "nginx-backup" submitted successfully.
Run `ark backup describe nginx-backup` for more details.
Запускark backup describe nginx-backup
должен обеспечить следующий вывод после небольшой задержки:
OutputName: nginx-backup
Namespace: heptio-ark
Labels:
Annotations:
Phase: Completed
Namespaces:
Included: *
Excluded:
Resources:
Included: *
Excluded:
Cluster-scoped: auto
Label selector: app=nginx
Snapshot PVs: auto
TTL: 720h0m0s
Hooks:
Backup Format Version: 1
Started: 2018-09-26 00:14:30 -0400 EDT
Completed: 2018-09-26 00:14:34 -0400 EDT
Expiration: 2018-10-26 00:14:30 -0400 EDT
Validation errors:
Persistent Volumes:
pvc-e4862eac-c2d2-11e8-920b-92c754237aeb:
Snapshot ID: 2eb66366-c2d3-11e8-963b-0a58ac14428b
Type: ext4
Availability Zone:
IOPS:
Этот вывод показывает, чтоnginx-backup
завершился успешно.
Из панели управления облаком DigitalOcean перейдите в пространство, содержащее файлы резервных копий Kubernetes.
Вы должны увидеть новый каталог с именемnginx-backup
, содержащий файлы резервных копий Ark.
Используя левую панель навигации, перейдите кImages, а затем кSnapshots. В пределахSnapshots перейдите кVolumes. Вы должны увидеть снимок, соответствующий PVC, указанному в выводе выше.
Теперь мы можем проверить процедуру восстановления.
Давайте сначала удалим пространство именnginx-example
. Это удалит все в пространстве имен, включая балансировщик нагрузки и постоянный том:
kubectl delete namespace nginx-example
Убедитесь, что вы больше не можете получить доступ к Nginx в конечной точке Load Balancer и что развертываниеnginx-example
больше не выполняется:
kubectl get deployments --namespace=nginx-example
OutputNo resources found.
Теперь мы можем выполнить процедуру восстановления, снова используя клиентark
:
ark restore create --from-backup nginx-backup
Здесь мы используемcreate
для создания объекта ArkRestore
из объектаnginx-backup
.
Вы должны увидеть следующий вывод:
OutputRestore request "nginx-backup-20180926143828" submitted successfully.
Run `ark restore describe nginx-backup-20180926143828` for more details.
Проверьте состояние восстановленного развертывания:
kubectl get deployments --namespace=nginx-example
OutputNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-deployment 1 1 1 1 1m
Проверьте создание постоянного тома:
kubectl get pvc --namespace=nginx-example
OutputNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nginx-logs Bound pvc-e4862eac-c2d2-11e8-920b-92c754237aeb 5Gi RWO do-block-storage 3m
Перейдите к внешнему IP-адресу Сервиса Nginx еще раз, чтобы убедиться, что Nginx запущен и работает.
Наконец, проверьте журналы на восстановленном постоянном томе, чтобы убедиться, что история журнала была сохранена после восстановления.
Для этого еще раз выберите имя модуля, используяkubectl get
:
kubectl get pods --namespace nginx-example
OutputNAME READY STATUS RESTARTS AGE
nginx-deployment-77d8f78fcb-zt4wr 1/1 Running 0 29m
Затем в негоexec
:
kubectl exec -it nginx-deployment-77d8f78fcb-zt4wr --namespace nginx-example -- /bin/bash
Оказавшись внутри контейнера Nginx,cat
журналы доступа Nginx:
cat /var/log/nginx/access.log
Output10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://203.0.113.0/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
Вы должны увидеть те же попытки доступа перед резервным копированием (обратите внимание на временные метки), подтверждающие, что восстановление постоянного тома прошло успешно. Обратите внимание, что в журналах могут быть дополнительные попытки, если вы посетили целевую страницу Nginx после восстановления.
На данный момент мы успешно создали резервную копию наших объектов Kubernetes в DigitalOcean Spaces и наших постоянных томов с помощью моментальных снимков томов блочного хранилища. Мы смоделировали сценарий бедствия и восстановили сервис для тестового приложения Nginx.
Заключение
В этом руководстве мы установили и настроили инструмент резервного копирования Ark Kubernetes в кластере Kubernetes на базе DigitalOcean. Мы настроили инструмент для резервного копирования объектов Kubernetes в DigitalOcean Spaces и резервного копирования постоянных томов с помощью снимков томов блочного хранилища.
Арк также может быть использован для планирования регулярного резервного копирования вашего кластера Kubernetes. Для этого вы можете использовать командуark schedule
. Его также можно использовать для миграции ресурсов из одного кластера в другой. Чтобы узнать больше об этих двух вариантах использования, обратитесь кofficial Ark documentation.
Чтобы узнать больше о DigitalOcean Spaces, обратитесь кofficial Spaces documentation. Чтобы узнать больше о томах блочного хранилища, обратитесь кBlock Storage Volume documentation.
Это руководство основано на README изark-plugin-digitalocean
GitHub repo в StackPointCloud.