Добавил:
мой вк: vk.com/truecrimebitch больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Изд. № 29

.pdf
Скачиваний:
0
Добавлен:
11.05.2025
Размер:
1.77 Mб
Скачать

accessModes:

- ReadWriteOnce resources:

requests: storage: 4Gi

EOF

Проверьте состояние объекта:

kubectl get pvc mypvc

Далее начинается создание узла busybox и использование созданного

PersistentVolumeClaim:

cat <<'EOF'> busybox-pod-one.yaml | kubectl apply -f busybox-pod- one.yaml

apiVersion: v1 kind: Pod metadata:

creationTimestamp: null labels:

run: busybox name: busybox

spec:

volumes:

-name: my-vol # has to match volumeMounts.name persistentVolumeClaim:

claimName: mypvc

containers:

-args:

-/bin/sh

--c

-sleep 3600 image: busybox

imagePullPolicy: IfNotPresent name: busybox

resources: {}

volumeMounts:

-name: my-vol # has to match volumes.name mountPath: /etc/foo

EOF

100

Проверьте состояние узла:

watch kubectl get pod busybox CTRL+C to exit

Далее начинаем проверку сохранности данных, подключившись к модулю и скопировав '/etc/passwd' в '/etc/foo/passwd', а затем удалив его:

kubectl exec busybox -it -- cp /etc/passwd /etc/foo/passwd

Удалите узел:

kubectl delete pod busybox --force --grace-period 0

Затем начинается создание второго узла, идентичного тому, который создан. Смонтировать его на том же томе и проверить, существует ли скопированный нами файл:

cat <<'EOF'> busybox-pod-two.yaml | kubectl apply -f busybox-pod- two.yaml

apiVersion: v1 kind: Pod metadata:

creationTimestamp: null labels:

run: busybox-two name: busybox-two

spec:

volumes:

-name: my-vol # has to match volumeMounts.name persistentVolumeClaim:

claimName: mypvc

containers:

-args:

-/bin/sh

--c

-sleep 3600 image: busybox

imagePullPolicy: IfNotPresent name: busybox

resources: {}

volumeMounts:

-name: my-vol # has to match volumes.name mountPath: /etc/foo

EOF

101

Проверьте состояние узла:

watch kubectl get pod busybox-two CTRL+C to exit

Verify that '/etc/foo' contains the 'passwd' file.

kubectl exec busybox-two -- ls /etc/foo # will show 'passwd'

Можно видеть файл, который скопирован, поскольку данные сохраняются в постоянном томе, который создан после удаления первого узла.

Моментальные снимки тома и классы моментальных снимков

В этом упражнении рассматривается создание моментального снимка

тома.

Шаг 2 – создать моментальные снимки тома

При создании моментального снимка тома необходимо зарегистрировать классы моментальных снимков тома в кластере. Класс моментальных снимков тома по умолчанию называется csi-hostpath-sn:

kubectl get volumesnapshotclasses

Затем создайте заявку на постоянный том, чтобы динамически создавать постоянный том:

cat <<'EOF'> csi-pvc.yaml | kubectl apply -f csi-pvc.yaml apiVersion: v1

kind: PersistentVolumeClaim metadata:

name: csi-pvc spec:

accessModes:

- ReadWriteOnce resources:

requests: storage: 1Gi

storageClassName: csi-hostpath-sc EOF

Можно подтвердить, что постоянный том создан с помощью следующей команды:

kubectl get pv

102

Можно сделать снимок тома для заявки на постоянный том:

cat <<'EOF'> snapshot-demo.yaml | kubectl apply -f snapshotdemo.yaml

apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot

metadata:

name: snapshot-demo spec:

volumeSnapshotClassName: csi-hostpath-snapclass source:

persistentVolumeClaimName: csi-pvc

EOF

Ключевые термины в приведенном выше фрагменте перечислены далее.

Имя PersistentVolumeClaim - это имя источника данных PersistentVolumeClaim для моментального снимка.

Моментальный снимок тома может запросить определенный класс, указав имя VolumeSnapshotClass, используя атрибут volumeSnapshotClassName. Если ничего не задано, используется класс по умолчанию.

Можно подтвердить свой моментальный снимок тома следующей командой:

kubectl get volumesnapshot

Восстановление из моментального снимка тома

Шаг 3 – восстановить из моментального снимка

Чтобы выполнить операцию восстановления, нужно использовать созданный моментальный снимок в новом ресурсе persistentvolumeclaim:

cat <<'EOF'> csi-pvc-restore.yaml | kubectl apply -f csi-pvc- restore.yaml

apiVersion: v1

kind: PersistentVolumeClaim metadata:

name: csi-pvc-restore spec:

storageClassName: csi-hostpath-sc dataSource:

name: snapshot-demo kind: VolumeSnapshot

apiGroup: snapshot.storage.k8s.io accessModes:

103

- ReadWriteOnce resources:

requests: storage: 1Gi

EOF

Можно подтвердить, что постоянное утверждение тома было создано с помощью VolumeSnapshot:

kubectl get pvc

Резервное копирование и аварийное восстановление Kasten K10

Шаг 4 – произвести резервное копирование и аварийное восстановление

В приведенном ниже разделе представлен полный пример того, как расширить приложение для поддержки универсального резервного копирования и восстановления с помощью Kasten K10.

Откройте вкладку Терминал и запустите приведенную ниже команду, чтобы создать новое пространство имен для размещения нашего приложения:

kubectl create namespace kasten-demo

Скопируйте спецификацию приложения ниже и разверните приложение demo-app в пространстве имен kasten-demo:

cat <<'EOF'> deployment.yaml | kubectl apply -f deployment.yaml apiVersion: v1

kind: PersistentVolumeClaim metadata:

namespace: kasten-demo name: demo-pvc labels:

app: demo pvc: demo

spec:

accessModes:

- ReadWriteOnce resources:

requests: storage: 1Gi

---

apiVersion: apps/v1 kind: Deployment metadata:

namespace: kasten-demo name: demo-app

104

labels: app: demo

spec: replicas: 1 selector:

matchLabels: app: demo

template:

metadata:

labels: app: demo

spec:

containers:

-name: demo-container image: alpine:3.7 resources:

requests: memory: 256Mi cpu: 100m

command: ["tail"]

args: ["-f", "/dev/null"] volumeMounts:

-name: data mountPath: /data

volumes:

-name: data persistentVolumeClaim:

claimName: demo-pvc

EOF

Теперь необходимо проверить статус развернутого приложения:

POD_NAME=$(kubectl --namespace kasten-demo get pods -l app=demo - -no-headers | awk '{print $1}')

kubectl --namespace kasten-demo get pods "$POD_NAME"

Вставка данных

Шаг 5 – вставить данные

Самый простой способ вставить данные в демонстрационное приложение - это скопировать их:

kubectl cp /etc/passwd kasten-demo/${POD_NAME}:/data/ -c democontainer

105

Проверьте, что данные были успешно скопированы:

kubectl --namespace kasten-demo exec ${POD_NAME} -c democontainer -- ls -l /data

Резервное копирование данных Мы собираемся создать резервную копию приложения, создав

пользовательскую политику резервного копирования.

cat <<'EOF'> custom-policy.yaml | kubectl apply -f custompolicy.yaml

kind: Policy

apiVersion: config.kio.kasten.io/v1alpha1 metadata:

name: sample-custom-backup-policy namespace: kasten-io

spec:

frequency: "@hourly" retention:

hourly: 24 daily: 7 weekly: 4 monthly: 12 yearly: 7

selector:

matchExpressions:

-key: k10.kasten.io/appNamespace operator: In

values:

-kasten-demo

actions:

- action: backup

EOF

Для получения дополнительной информации о пользовательском ресурсе Policy, нужно обратиться к странице документации Policy API.

После применения, открыть вкладку Kasten K10 и в окне панели мониторинга принять лицензионное соглашение и выбрать Политики.

Затем выбрать политику с именем sample-custom-backup-policy, нажать "Выполнить один раз", чтобы запустить политику сейчас. Это немедленно приведет к выполнению действий в политике sample-custom-backup-policy.

Вернуться на панель мониторинга и посмотреть выполняемые действия.

106

Уничтожение данных

Шаг 6 – уничтожить данные

Чтобы уничтожить данные вручную, необходимо вернуться в окно терминала и выполнить следующую команду:

kubectl -n kasten-demo exec ${POD_NAME} -c demo-container -- rm - rf /data/passwd

Проверить:

kubectl -n kasten-demo exec ${POD_NAME} -c demo-container -- cat /data/passwd

Восстановление данных

Шаг 7 – восстановить данные

Открыть вкладку Kasten K10 и в окне панели мониторинга выбрать Приложения.

На карточке приложения kasten-demo нажать "Восстановить", выбрать соответствующую точку восстановления и снова нажать "Восстановить".

Вернуться на панель мониторинга, чтобы просмотреть выполняемое действие восстановления и дождаться его завершения.

Проверка данных

После восстановления нужно убедиться, что данные не повреждены. Один из способов проверить, это - использовать инструмент diff.

Шаг 8 – проверить данные

Скопируйте восстановленные данные обратно в локальную среду env:

POD_NAME=$(kubectl --namespace kasten-demo get pods -l app=demo - -no-headers | awk '{print $1}')

kubectl cp kasten-demo/${POD_NAME}:data/passwd /tmp/passwd -c demo-container

Запустите diff для обоих файлов:

diff /etc/passwd /tmp/passwd

107

Содержание отчета

1.Титульный лист.

2.Цель работы.

4. Задание из практической работы.

5. Скриншоты пройденного тестирования.

6. Скриншоты выполнения практической работы.

7. Краткий ответ на пять контрольных вопросов.

Контрольные вопросы

1.В чем разница между постоянными и эфемерными томами?

2.Моментальный снимок тома, он аналогичен PersistentVolumeClaim?

3.Kasten K10 помогает защитить приложения от сбоев с помощью

чего?

4.На какие три основные категории делятся объемы?

5.Какие типы источников томов могут быть спроектированы в настоящее время?

108

Список использованных источников

1.Kubernetes в действии. - М.: ДМК Пресс, 2019. – 672 с. Марко Лукша / пер. с англ. А. В. Логунов.

2.Архитектура цифровых платформ для защищённых ЦОД. Ч. 1. Общие подходы и используемые технологии: учебное пособие / МТУСИ.

М., 2021. – 90 с. В.А. Докучаев, С.В. Запольских, В.В. Маклачкова, В.М. Матросов, А.В. Шведов, О.В. Щербина / Под ред. д.т.н., проф. В.А. Докучаева.

3.Kybercapmus.io Build Your First Kubernetes Cluster | Course 1 [Электронный ресурс] - URL: https://kubecampus.io/kubernetes/courses/first- kubernetes-cluster/ (дата обращения: 24.02.2024).

4.Kybercapmus.io Использование minikube для создания кластера

[Электронный ресурс] - URL: https://kubernetes.io/ru/docs/tutorials/kubernetes- basics/create-cluster/cluster-intro/ (дата обращения: 25.02.2024).

5.Kybercapmus.io Build Kubernetes Application | Course 2 [Электронный ресурс] - URL: https://kubecampus.io/kubernetes/courses/build- kubernetes-application/ (дата обращения: 24.02.2024).

6.Kybercapmus.io Backup Your Kubernetes Application | Course 3 [Электронный ресурс] - URL: https://kubecampus.io/kubernetes/courses/backup- kubernetes-application/ (дата обращения: 26.02.2024).

7.Kybercapmus.io Application Consistency | Course 4 [Электронный ресурс] - URL: https://kubecampus.io/kubernetes/courses/application-consistency/

(дата обращения: 27.02.2024).

8.Kybercapmus.io Storage and Applications in Kubernetes| Course 5 [Электронный ресурс] - URL: https://kubecampus.io/kubernetes/courses/storage- and-applications-in-kubernetes/ (дата обращения: 27.02.2024).

9.Маркелов Андрей. Введение в технологии контейнеров и Kubernetes; Редактор Д.А. Мовчан. – М.: ДМК-Пресс, 2019; ISBN · 978-5- 97060-775-6.

10.Райс Лиз. Безопасность контейнеров. Фундаментальный подход к

защите контейнеризированных приложений /

Пер. с англ. И. Пальти.

— (Сер. «Бестселлеры O'Reilly»). – СПб.:

Питер, 2021. - 224 с.

-ISBN 978-5-4461-1850-2. - URL: https://www.ibooks.ru/bookshelf/377949/reading (дата обращения: 08.05.2024).

-Текст: электронный.

109