User Tools

Site Tools


работа_с_хранилищами_в_kubernetes

Работа с хранилищами в Kubernetes

Реклама

  • Kubernetes «из коробки» - отличное средство для запуска и масштабирования stateless (т.е. без сохранения данных) приложений. Сложности начинаются для stateful (т.е. с сохранением данных) приложений, таких как базы данных, например MySQL, PostgreSQL и прочее
  • На нашем вебинаре мы на практических примерах разберем решения задач хранения данных для приложений, работающих в Kubernetes, начиная с простого продолжения PersistentVolume/PersistentVolumeClaim - rancher/local-path-provisioner и заканчивая отказоустойчивым longhorn

Техническое задание

  • Развернуть сервис Keycloak с базой данных учетных записей, и приложение, использующее его для OpenID аутентификации, в корпоративном On-Premises Kubernetes.
  • Убедиться в отказоустойчивости полученного решения, как с точки зрения доступа пользователей, так и хранения данных.

Запись вебинара

Методическая подготовка

Шаг 1. Подготовка (сделано заранее)

  • Выключаем kube кластер, устанавливаем 4GB для узлов, включаем

Шаг 2. Использование статических PV для приложений с PVC

  • Устанавливаем Keycloak в Kubernetes (10 минут)
server.corp13.un:~# cat /etc/bind/corp13.un
...
keycloak        A       172.16.1.13

Шаг 3. Управление заголовками в HAProxy и Ingress контроллере

  • Устанавливаем Chrome на client2
  • Тестируем с client2 и обнаруживаем проблемы
  • Добавляем параметры set-header в настройки backend Решение HAProxy
  • Добавляем use-forwarded-headers в конфигурацию ingress-nginx

Шаг 4. Использование local-path-provisioner для Dynamic Volume Provisioning

  • Удаляем Keycloak из Kubernetes (можно ns), затем “вручную” его Volumes и файлы с /disk2
  • Смотрим, на каком узле запустился, видим файлы в каталоге /opt/local-path-provisioner
kube3:~# find /opt/local-path-provisioner/
  • Удаляем Keycloak из Kubernetes (можно ns), его PV и файлы удалятся автоматически
  • Удаляем rancher local-path-provisioner (лучше полностью, иначе, останется sc)

Шаг 5. Использование распределенного блочного хранилища longhorn

5.1 Dynamic Volume Provisioning и отказоустойчивость

  • Устанавливаем longhorn (open-iscsi и на kube4 тоже) (5 минут)
  • Указываем storageClass: longhorn и postgresql в values.yaml и устанавливаем Keycloak в Kubernetes (10 минут)
  • Подключаемся к UI и настраиваем Pod Deletion Policy When Node is Down: delete-statefuset-pod
  • Дожидаемся работоспособность KK и создаем realm
  • Выключаем узел, на котором развернулся postgresql Keycloak (обычно kube3)
  • Дожидаемся восстановления работоспособность KK создаем пользователя
kube1# kubectl -n my-keycloak-ns logs pods/my-keycloak-1 -f | grep VALIDATION

5.2 Использование snapshot-ов

5.3 Использование backup-ов

  • Можно выключить kube кластер
$ scp root@192.168.13.201:.kube/config ~/.kube/
  • Подключаемся через UI longhorn
  • Дожидаемся загрузки Keycloak в Kubernetes кластере node

Вопросы?

Дополнительные материалы

Как все вернуть обратно

student1@CTC-2458F7OHBAL  ~/nodes
$ vagrant.exe halt
  • Откатить все на снапшоты
student1@CTC-2458F7OHBAL  ~
$ cp .kube/config_kube .kube/config
работа_с_хранилищами_в_kubernetes.txt · Last modified: 2024/04/24 09:36 by val