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

Изд. № 29

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

kubectl run mysql-client --image=mysql:8.0 --namespace springpetclinic -i --rm --restart=Never --\

mysql -h customers-db-mysql -uroot -p$MYSQL_PASSWORD<<EOF USE service_instance_db;

SELECT * FROM owners; EOF

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

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

kubectl scale deployments -n spring-petclinic {api- gateway,customers-service,vets-service,visits-service} --replicas=3

Убедитесь, что развертывания масштабируются:

kubectl get pods -n spring-petclinic

Теперь развертывание полнофункционального приложения Spring Boot в Kubernetes выполнено успешно.

Kubestr

Шаг 5 – проверить и оценить возможности хранения Кубернетес путем использования встроенных наборов инструментов.

Kubestr - это набор инструментов для обнаружения, проверки и оценки возможностей хранения kubernetes.

По мере роста внедрения Kubernetes расширяются и предложения по постоянному хранению, доступные пользователям. Внедрение CSI (Container Storage Interface) позволило поставщикам систем хранения данных с легкостью разрабатывать драйверы. На самом деле сегодня доступно около 100 различных SCSI-драйверов. Наряду с существующими встроенными поставщиками, эти опции могут затруднить выбор правильного хранилища.

Kubestr может помочь следующими способами.

Определить различные параметры хранилища, присутствующие в кластере.

Проверить, правильно ли настроены параметры хранилища.

80

Оценить хранилище с помощью распространенных инструментов сравнительного анализа, таких как FIO.

Используя Kubestr для установки инструмента, загрузить последнюю версию [3]:

curl -sLO https://github.com/kastenhq/kubestr/releases/download/v0.4.17/kubestr- v0.4.17-linux-amd64.tar.gz

Распаковать инструмент и сделать из него исполняемый файл chmod +x kubestr:

tar -xvzf kubestr-v0.4.17-linux-amd64.tar.gz -C /usr/local/bin chmod +x /usr/local/bin/kubestr

Чтобы узнать доступные варианты хранения, необходимо запустить kubert.

С помощью kubestr можно протестировать скорости последовательного чтения и записи, которые, как ожидается, будут высокими.

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

Скопировать спецификацию теста:

cat <<'EOF'>ssd-test.fio [global]

bs=4k

ioengine=libaio

iodepth=1

size=1g

direct=1

runtime=10

directory=/

filename=ssd.test.file

[seq-read] rw=read stonewall

[rand-read] rw=randread stonewall

[seq-write] rw=write stonewall

81

[rand-write] rw=randwrite stonewall EOF

Выполнить следующую команду, чтобы запустить тест:

kubestr fio -f ssd-test.fio -s local-path

Можно указать дополнительные параметры, такие как --size и --fio file.

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

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

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

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

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

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

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

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

1.Какие приложения могут находиться в контейнерах?

2.Можно ли хранить в контейнере базу данных MySQL?

3.Зачем нужен HELM, и что он позволяет делать в Kubernetes?

4.Какие преимущества Kubernetes перед Docker Compose?

5.В чем разница между образом и контейнером?

82

5.4. Создание резервной копии вашего приложения Kubernetes (практическая работа № 3)

В рамках практической работы будет представлен Kasten K10, решение для резервного копирования и аварийного восстановления номер один для

Kubernetes. Kasten K10 был создан специально для Kubernetes и

предоставляет корпоративным операционным группам простую в использовании, масштабируемую и безопасную систему для резервного копирования/восстановления, аварийного восстановления и мобильности приложений Kubernetes [6].

Цель

Изучение резервного копирования в Kubernetes, а также успешного резервного копирования ключевых файлов и защиты данных приложений.

Задание

1.Выбрать третий курс (Backup Your Kubernetes Application | Course 3)

иначать выполнение https://kubecampus.io/kubernetes/courses/backup- kubernetes-application/lessons/kubernetes-backup-fundamentals/.

2.Пройти тестирование.

3.Выполнить практическую работу.

4.Ответить на контрольные вопросы.

Методические указания

Добавьте репозиторий Kasten Helm 10. Настройте среды с добавлением репозитория Kasten K10 Helm в систему [6]:

helm repo add kasten https://charts.kasten.io/

Установите MySQL и создайте демонстрационную базу данных, чтобы поэкспериментировать с резервным копированием и восстановлением облачного приложения, на этом шаге начинается установка MySQL и создание базы данных.

Шаг 1 – установить MySQL

Сначала нужно установить MySQL, используя следующие команды [6]:

kubectl create namespace mysql

helm install mysql bitnami/mysql --namespace=mysql

83

Чтобы убедиться, что MySQL запущен, проверьте статус модуля, он должен находиться в состоянии готово 1/1:

watch -n 2 "kubectl -n mysql get pods"

Как только все модули получат статус запущенных и готовых 1/1, нажмите CTRL + C, чтобы выйти из watch, а затем запустить следующие команды для создания локальной базы данных:

MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace mysql mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)

kubectl exec -it --namespace=mysql $(kubectl --namespace=mysql get pods -o jsonpath='{.items[0].metadata.name}') \

-- env MYSQL_PWD=$MYSQL_ROOT_PASSWORD mysql -u root -e "CREATE DATABASE k10demo"

Установка K10 и настройка хранилища

Шаг 2 – установить К10

На этом шаге начинается установка K10. Выполните следующие команды для корректной загрузки:

helm install k10 kasten/k10 --namespace=kasten-io --create- namespace

Чтобы убедиться, что Kasten K10 запущен, необходимо проверить состояние модулей: все они должны находиться в запущенном состоянии и готовы 1/1, 2/2:

watch -n 2 "kubectl -n kasten-io get pods"

Как только все модули получат статус готово 1/1, 2/2, можно выйти из watch с помощью клавиш CTRL + C.

Настройка локальной системы хранения

Шаг 3 – настроить локальную систему

После запуска K10 используются следующие команды для настройки локальной системы хранения:

kubectl annotate volumesnapshotclass csi-hostpath-snapclass k10.kasten.io/is-snapshot-class=true

84

Просмотр панели мониторинга K10

Необходимо настроить доступ к панели мониторинга K10, создав порт узла (не рекомендуется для производственных сред). Первоначально важно создать файл конфигурации:

cat > k10-nodeport-svc.yaml << EOF apiVersion: v1

kind: Service metadata:

name: gateway-nodeport namespace: kasten-io

spec:

selector: service: gateway

ports:

-name: http port: 8000

nodePort: 32000 type: NodePort

EOF

Создайте фактическую службу порта узла:

kubectl apply -f k10-nodeport-svc.yaml

Просмотр панели мониторинга K10

После завершения выполненных выше действий можно просмотреть панель мониторинга K10 на другой вкладке слева. На этом этапе рекомендуется совершить экскурсию по панели мониторинга K10.

Создание политики резервного копирования

Шаг 4 – создать политику резервного копирования

Теперь необходимо создать политику для резервного копирования MySQL в ранее настроенное хранилище объектов.

На главной панели мониторинга K10 щелкните на карточке политик. На данный момент не должно быть видно никаких политик.

Создайте новую политику и выполните следующие шаги:

-дать политике название: mysql-резервное копирование;

-выбрать моментальный снимок для действия;

85

-выбрать "ежечасно" для установления частоты действия;

-оставить выбор сохранения моментальных снимков;

-выбрать по имени для выбранных приложений, а затем из выпадающего списка выбрать mysql;

-оставить все остальные настройки как есть и выбрать "создать политику";

-запустить политики.

Вышеуказанные политики будут запускаться только в запланированное время (по умолчанию в начале часа). Чтобы запустить политики вручную в первый раз, необходимо нажать "Выполнить один раз" на странице "Политики". Подтвердить, нажав запустить политику, а затем вернуться на главную панель мониторинга, чтобы просмотреть задание в действии.

Восстановление из резервной копии

Теперь, когда у вас есть резервная копия MySQL, давайте смоделируем случайную потерю данных, а затем восстановим систему после этой потери.

Для целей этого тест-драйва важно удалить демонстрационную базу данных k10, которая создана ранее.

Можно убедиться, что база данных удалена, выполнив следующую команду [6]:

MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace mysql mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)

kubectl exec -it --namespace=mysql $(kubectl --namespace=mysql get pods -o jsonpath='{.items[0].metadata.name}') -- env MYSQL_PWD=$MYSQL_ROOT_PASSWORD mysql -u root -e "SHOW DATABASES LIKE 'k10demo'"

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

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

Чтобы восстановить базу данных, необходимо перейти на панель управления K10, нажать "Приложения", а затем выбрать "Восстановить" на карточке MySQL.

Щелкнуть по последней точке восстановления, а затем выбрать экспортированную точку восстановления (она хранится в системе хранения

86

объектов). В этом случае будет выбран параметр имени приложения "по умолчанию" для восстановления на месте (восстановить как "mysql"). Оставить все остальные параметры как есть, нажать "Восстановить" и подтвердить действие.

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

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

kubectl exec -it --namespace=mysql $(kubectl --namespace=mysql get pods -o jsonpath='{.items[0].metadata.name}') -- env MYSQL_PWD=$MYSQL_ROOT_PASSWORD mysql -u root -e "SHOW DATABASES LIKE 'k10demo'"

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

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

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

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

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

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

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

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

1.Что отличает Kubernetes от более ранних вычислительных инфраструктур?

2.Каковы различные операционные требования к приложениям Kubernetes в отличие от устаревших монолитных систем?

3.Каковы риски, связанные с атаками программ-вымогателей на кластеры Kubernetes?

4.Каковы третий и четвертый шаги в процедуре резервного копирования?

5.С помощью какой команды проверяется статус узла?

87

5.5.Согласованность приложений (практическая работа № 4)

Врамках данной практической работы вы узнаете, как работает резервное копирование и восстановление приложений на базе Kubernetes с использованием Kasten K10 от Veeam и Kanister, проекта Kasten с открытым исходным кодом, который позволяет создавать резервные копии и восстанавливать данные приложений на Kubernetes, а также позволяет создавать задачи управления данными в виде схем, которыми можно легко поделиться [7].

Цель

Изучение принципов работы резервного копирования и восстановления собственных приложений Kubernetes с использованием Kasten K10 и Kanister, проекта Kasten с открытым исходным кодом, управление данными на уровне приложений.

Задание

1.Выбрать четвертый курс (Application Consistency | Course 4) и начать выполнение https://kubecampus.io/kubernetes/courses/application- consistency/lessons/application-level-data-management.

2.Пройти тестирование.

3.Выполнить практическую работу.

4.Ответить на контрольные вопросы.

Методические указания

Установка инструментария Kasten K10

Шаг 1 – установить инструментарий Kasten K10

На этом шаге загрузите K10, выполнив следующие команды [7]:

helm install k10 kasten/k10 --namespace=kasten-io --create- namespace

Чтобы убедиться, что Kasten K10 запущен, надо проверить состояние модулей и что все они находятся в запущенном состоянии и готовы:

watch -n 2 "kubectl -n kasten-io get pods"

Как только все модули получат статус Запущено и готово, надо нажать

CTRL + C, чтобы выйти из watch.

88

Настройка локальной системы хранения Шаг 2 – настроить локальную систему хранения

Запустите K10, используя следующие команды для настройки локальной системы хранения:

kubectl annotate volumesnapshotclass csi-hostpath-snapclass k10.kasten.io/is-snapshot-class=true

Открытие панели мониторинга K10

Шаг 3 – открыть панель мониторинга К10

Можно приступить к настройке доступа к панели мониторинга K10, создав порт узла (не рекомендуется для производственных сред). Сначала создается файл конфигурации:

cat > k10-nodeport-svc.yaml << EOF apiVersion: v1

kind: Service metadata:

name: gateway-nodeport namespace: kasten-io

spec:

selector: service: gateway

ports:

- name: http port: 8000 nodePort: 32000

type: NodePort EOF

Теперь создайте фактическую службу порта узла:

kubectl apply -f k10-nodeport-svc.yaml

Просмотр панели мониторинга K10

Шаг 4 – просмотреть мониторинг К10

После завершения выполненных выше действий можно просмотреть панель мониторинга K10 на другой вкладке слева. На этом этапе рекомендуется совершить экскурсию по панели мониторинга K10.

89