Как сделать резервную копию и восстановить кластер Kubernetes на DigitalOcean с помощью Heptio Ark

[.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. Предпосылки Арка состоят из:

  • Пространство имен Aheptio-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 Welcome Page

Это указывает на то, что ваше 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-digitaloceanGitHub repo в StackPointCloud.

Related