Кластер Azure AKS и Docker — как хранить постоянные данные

Кластер Azure AKS и Docker — как хранить постоянные данные

У меня есть приложение, которое запущено как служба в кластере Azure aks (kubernetes). Это приложение извлекает данные из базы данных и помещает их в файл.

Насколько я понимаю, мне сначала нужно создать образ docker и отправить его в реестр Azure aks. После этого мне нужно создать pod и запустить это приложение как службу.

У меня есть вопрос:

а) Какой параметр Azure или Docker мне нужно использовать для хранения данных, чтобы они не удалялись (не ликвидировались) в случае сбоя, удаления или перепланирования модуля на другом узле, а данные оставались доступными в файле после его создания.

b) Поиск в интернете показал, что я могу использовать постоянный диск Azure или хранилище файлов, создав его статически или динамически с помощью команды kubectl. Однако часть, которую я не понимаю, это - после создания постоянного хранилища с помощью kubectl apply -f как мне использовать хранилище дисков Azure?

Нужно ли мне изменять dockerfile и указывать путь монтирования (том?), а также указывать путь монтирования в приложении (например, /mnt/app-data), по которому приложение может записывать данные в файл.

Хотя, возможно, и существует стандартный механизм хранения данных в кластере AKS, я в этом новичок и с нетерпением жду советов экспертов о том, как создать и использовать хранилище в Azure (точнее, кластер AKS), чтобы приложение могло записывать в него данные.

решение1

Сохранение данных в Kubernetes (независимо от того, AKS это или другая реализация) потребует от вас рассмотрения использования постоянных томов. Это концепция в Kubernetes, которая затем поддерживается определенными ресурсами хранения у выбранного вами поставщика, например, в Azure это Azure Disk или Azure Files.

Во-первых, я бы рекомендовал вам оценить свое приложение и определить, действительно ли вам нужно постоянно хранить данные в вашем pod. Отсутствие состояния значительно облегчает вам жизнь при работе с Kubernetes с точки зрения устойчивости и DR. Например, можно ли сделать свою базу данных (работающую вне AKS) источником истины и заставить приложение загружать данные при каждом запуске?

Если вам действительно нужно хранить эти данные, то вам нужно рассмотреть возможность присоединения постоянного тома к вашим pod и указания его как тома в вашем файле Docker. Есть хорошее пошаговое руководство о том, как работает хранилище и как его настроитьздесь.

Связанный контент