1. Базы данных в Kubernetes
Александр Чистяков
vdsina.ru, евангелист
2. Очень краткое содержание
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 2 / 77
• Отказ от ответственности
• Зачем?
• План развертывания
• Примеры использования
• Как мы ходили в горы и упали (*)
5. Зачем?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 5 / 77
• Унификация инфраструктуры
• (Развертывание, мониторинг, обсервабилити,
управление жизненным циклом)
6. Зачем?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 6 / 77
• Унификация инфраструктуры
• (Развертывание, мониторинг, обсервабилити,
управление жизненным циклом)
• Антикитерский механизм
7. Зачем?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 7 / 77
• Унификация инфраструктуры
• (Развертывание, мониторинг, обсервабилити,
управление жизненным циклом)
• Антикитерский механизм
• (Обсудим это позже)
8. План развертывания - история
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 8 / 77
• Я начал эксперименты в июне 2018-го
9. План развертывания - история
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 9 / 77
• Я начал эксперименты в июне 2018-го
• В то время логичным выбором был Helm
10. План развертывания - история
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 10 / 77
• Я начал эксперименты в июне 2018-го
• В то время логичным выбором был Helm
11. План развертывания - Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 11 / 77
• Найти нужный chart
12. План развертывания - Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 12 / 77
• Найти нужный chart
• Переопределить нужные values
13. План развертывания - Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 13 / 77
• Найти нужный chart
• Переопределить нужные values
• Применить
14. План развертывания - Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 14 / 77
• Найти нужный chart
• Переопределить нужные values
• Применить
• Еще надо где-то хранить состояние (данные)
15. Где хранить данные?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 15 / 77
• Если вы уже в облаке - храните в облаке
16. Где хранить данные?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 16 / 77
• Если вы уже в облаке - храните в облаке
• (AWS, Google Cloud)
17. Где хранить данные?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 17 / 77
• Если вы уже в облаке - храните в облаке
• (AWS, Google Cloud)
• Если on-prem - храните на локальных дисках
19. Плюсы локальных дисков
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 19 / 77
• Это просто
• Не требует создания распределенного
хранилища
20. Плюсы локальных дисков
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 20 / 77
• Это просто
• Не требует создания распределенного
хранилища
• Не требует дополнительного обслуживания
21. Минусы локальных дисков
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 21 / 77
• Отказоустойчивость и масштабирование
делаются извне
22. Минусы локальных дисков
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 22 / 77
• Отказоустойчивость и масштабирование
делаются извне
• Данные хранятся на тех же мощностях, что и
кластер
23. Минусы локальных дисков
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 23 / 77
• Отказоустойчивость и масштабирование
делаются извне
• Данные хранятся на тех же мощностях, что и
кластер
• В случае потери метаинформации найти, где
было что, очень сложно
26. Другие варианты on-prem
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 26 / 77
• GlusterFS
• Ceph
• rook.io (Ceph в том же K8s кластере)
27. Другие варианты on-prem
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 27 / 77
• GlusterFS
• Ceph
• rook.io (Ceph в том же K8s кластере)
• (Последнее я сам не пробовал и советовать
не могу)
28. Другие варианты on-prem
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 28 / 77
• GlusterFS
• Ceph
• rook.io (Ceph в том же K8s кластере)
• (Последнее я сам не пробовал и советовать
не могу)
• rook.io использует Флант
29. Helm - Stolon
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 29 / 77
• Stolon - как Patroni, но на Go
30. Helm - Stolon
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 30 / 77
• Stolon - как Patroni, но на Go
• github.com/alexclear/k8s-stolon-lab
31. Helm - Patroni
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 31 / 77
• Patroni - как Stolon, но на Python
32. Helm - Patroni
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 32 / 77
• Patroni - как Stolon, но на Python
• github.com/alexclear/k8s-patroni-lab
33. Helm - XtraDB
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 33 / 77
• XtraDB - как Galera, но от Percona
34. Helm - XtraDB
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 34 / 77
• XtraDB - как Galera, но от Percona
• github.com/alexclear/k8s-percona-xtradb-
cluster-lab
35. Helm - EFK
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 35 / 77
• EFK - как ELK, только без L
36. Helm - EFK
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 36 / 77
• EFK - как ELK, только без L
• github.com/alexclear/k8s-freehck-efk-lab
37. А что, если?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 37 / 77
• Если мы хотим делать бэкапы?
38. А что, если?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 38 / 77
• Если мы хотим делать бэкапы?
• Если мы хотим автоматически экспортировать
дэшборд?
39. А что, если?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 39 / 77
• Если мы хотим делать бэкапы?
• Если мы хотим автоматически экспортировать
дэшборд?
• Если мы хотим автоматически апргрейдить
минорные версии?
40. А что, если?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 40 / 77
• Если мы хотим делать бэкапы?
• Если мы хотим автоматически экспортировать
дэшборд?
• Если мы хотим автоматически апргрейдить
минорные версии?
• Пересмотрим план развертывания
41. План развертывания - не Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 41 / 77
• Оператор = CRD + контроллер
42. План развертывания - не Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 42 / 77
• Оператор = CRD + контроллер
• CRD позволяет добавить в YAML что-то свое
43. План развертывания - не Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 43 / 77
• Оператор = CRD + контроллер
• CRD позволяет добавить в YAML что-то свое
• Контроллер управляет жизненным циклом
этого чего-то
44. План развертывания - не Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 44 / 77
• Оператор = CRD + контроллер
• CRD позволяет добавить в YAML что-то свое
• Контроллер управляет жизненным циклом
этого чего-то
• Контроллер - программа, обычно, на Go
45. План развертывания - не Helm
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 45 / 77
• Оператор = CRD + контроллер
• CRD позволяет добавить в YAML что-то свое
• Контроллер управляет жизненным циклом
этого чего-то
• Контроллер - программа, обычно, на Go
• (Работает оперейшнс инженером)
46. План развертывания - операторы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 46 / 77
• В муках найти работающий оператор
47. План развертывания - операторы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 47 / 77
• В муках найти работающий оператор
• Установить, используя Helm
48. План развертывания - операторы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 48 / 77
• В муках найти работающий оператор
• Установить, используя Helm
• Наслаждаться использованием CRD
49. Операторы - Cassandra
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 49 / 77
• github.com/alexclear/vagrant-k8s-freehck-
cassandra-lab
51. Как выбрать оператор?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 51 / 77
• Попробовать первый
• Работает - не трогать
52. Как выбрать оператор?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 52 / 77
• Попробовать первый
• Работает - не трогать
• Не работает ни один - починить
53. Операторы - Redis
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 53 / 77
• github.com/alexclear/vagrant-k8s-freehck-
redis-lab
54. Операторы - PostgreSQL
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 54 / 77
• github.com/alexclear/vagrant-k8s-freehck-
postgres-lab
55. Как выбрать оператор?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 55 / 77
• Тот, производителя которого вы знаете
56. Как выбрать оператор?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 56 / 77
• Тот, производителя которого вы знаете
• Тот, который проще развернуть
58. Какие еще операторы есть?
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 58 / 77
• Тысячи их!
59. Как мы ходили в горы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 59 / 77
• У нас был кластер K8s с хранилищем на
локальных дисках
60. Как мы ходили в горы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 60 / 77
• У нас был кластер K8s с хранилищем на
локальных дисках
• В нем EFK на каждой ноде для логов
61. Как мы ходили в горы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 61 / 77
• У нас был кластер K8s с хранилищем на
локальных дисках
• В нем EFK на каждой ноде для логов
• K8s мастер был один, в виртуалке на
каком-то левом хосте
62. Как мы ходили в горы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 62 / 77
• У нас был кластер K8s с хранилищем на
локальных дисках
• В нем EFK на каждой ноде для логов
• K8s мастер был один, в виртуалке на
каком-то левом хосте
• Я решил улучшить этот хост путем
переустановки
63. Как мы ходили в горы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 63 / 77
• У нас был кластер K8s с хранилищем на
локальных дисках
• В нем EFK на каждой ноде для логов
• K8s мастер был один, в виртуалке на
каком-то левом хосте
• Я решил улучшить этот хост путем
переустановки
• Данные было проще забыть, чем
восстановить
64. И упали
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 64 / 77
• Тот же кластер (версия 2.0), тот же EFK
65. И упали
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 65 / 77
• Тот же кластер (версия 2.0), тот же EFK
• Напомню, под ElasticSearch на каждой ноде
66. И упали
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 66 / 77
• Тот же кластер (версия 2.0), тот же EFK
• Напомню, под ElasticSearch на каждой ноде
• Локальные диски, раздел / во весь диск
67. И упали
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 67 / 77
• Тот же кластер (версия 2.0), тот же EFK
• Напомню, под ElasticSearch на каждой ноде
• Локальные диски, раздел / во весь диск
68. Шекспир и племянники
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 68 / 77
• Место начинает заканчиваться на какой-то
ноде
69. Шекспир и племянники
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 69 / 77
• Место начинает заканчиваться на какой-то
ноде
• Достигается high watermark
70. Шекспир и племянники
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 70 / 77
• Место начинает заканчиваться на какой-то
ноде
• Достигается high watermark
• kubelet гасит ноду целиком
71. Шекспир и племянники
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 71 / 77
• Место начинает заканчиваться на какой-то
ноде
• Достигается high watermark
• kubelet гасит ноду целиком
• Данные едут на соседнюю ноду
72. Шекспир и племянники
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 72 / 77
• Место начинает заканчиваться на какой-то
ноде
• Достигается high watermark
• kubelet гасит ноду целиком
• Данные едут на соседнюю ноду
• Бармен, повторите!
73. Шекспир и племянники
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 73 / 77
• Место начинает заканчиваться на какой-то
ноде
• Достигается high watermark
• kubelet гасит ноду целиком
• Данные едут на соседнюю ноду
• Бармен, повторите!
• Все данные из ES пришлось выкинуть целиком
74. Постпостмортем
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 74 / 77
• Если вы провижните каталоги с данными с
тех же дисков, где находится kubelet, то вам
будет исключительно весело
75. Постпостмортем
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 75 / 77
• Если вы провижните каталоги с данными с
тех же дисков, где находится kubelet, то вам
будет исключительно весело
• Исключительно весело вам будет теперь
всегда!
76. Выводы
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 76 / 77
• Вверх по бесконечной лестнице абстракций
заберутся не только лишь все
• A new study shows that death rates increased
for middle-aged people of all racial and ethnic
groups
77. That’s all, folks!
Александр Чистяков, vdsina.ru Базы данных в Kubernetes 77 / 77
• alexclear@gmail.com
• https://telegram.me/lhommequipleure
• https://telegram.me/demeliorator_pod