Поделиться через


Рекомендации по хранению для службы Azure Kubernetes (AKS)

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

Служба Azure Kubernetes поддерживает рабочие нагрузки как без сохранения состояния, так и с сохранением состояния. При развертывании приложений с отслеживанием состояния требуются соответствующие решения хранилища для поддержания состояния приложения. AKS интегрируется с несколькими собственными параметрами хранения, например: управляемые базы данных, диски (блочное хранение), файлы и объектное хранилище. Каждый вариант предоставляет различные характеристики производительности, гарантии доступности и структуры затрат для решения различных требований к рабочей нагрузке.

Выберите нужную службу хранилища

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

Тип данных Рекомендуемая служба хранения Когда следует использовать эту службу
Структурированные данные Управляемые базы данных (Azure SQL, База данных Azure для MySQL, База данных Azure для PostgreSQL, Azure Cosmos DB) Для реляционных или NoSQL данных, требующих встроенной высокой доступности, автоматического резервного копирования и масштабируемости без управления базовой инфраструктурой
Неструктурированные данные Хранилище BLOB-объектов Azure Для больших объемов данных объектов, таких как файлы мультимедиа, документы и журналы, которым требуется доступ по протоколу HTTP/REST через пакеты SDK, протокол NFS или BLOBFuse
Общие данные файлов (высокая производительность) Azure NetApp Files или Azure Files Premium Для общего доступа к файлам с задержкой в субмиллисекундах (Azure NetApp Files) или с согласованной одноцифровой задержкой в миллисекундах (Azure Files Premium)
Общие данные конфигурации Azure Files Standard Для файлов конфигурации, состояния общего приложения и других данных с умеренными требованиями к производительности
Рабочие нагрузки базы данных и транзакций Управляемые диски Azure (SSD уровня "Премиум", SSD уровня "Премиум" версии 2, "Ультра") Для приложений с сохранением состояния, требующих выделенного высокопроизводительного блочного хранилища с гарантированными показателями IOPS и пропускной способностью
Эфемерные, временные данные Временные диски Для временных данных, которые не должны сохраняться между перезапусками подов или узлов.

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

Рекомендации по проектированию

Ниже приведены рекомендации по проектированию хранилища для AKS. Рассмотрим, где требуется хранилище в среде AKS, и определите оптимальное решение для каждого требования.

Диски операционной системы (ОС)

Для дисков операционной системы (OS) рассмотрим следующие факторы:

  • Временные диски для ОС. Для каждой виртуальной машины в Azure требуется диск для своей ОС. Так как узлы Kubernetes являются временными, AKS по умолчанию использует временные диски ОС на поддерживаемых размерах виртуальных машин. Дополнительные сведения о временных дисках ОС см. в разделе "Эфемеральная ОС".

  • Управляемые диски для операционной системы. Если рабочая нагрузка требует их, вместо этого можно использовать обычные управляемые диски для узлов в кластере AKS. Это поддерживает рабочие нагрузки, требующие постоянных данных на диске ОС. Дополнительные сведения о вариантах постоянного хранилища см. в разделе "Параметры хранилища" для приложений в службе Azure Kubernetes (AKS).

  • Изменение размера управляемых дисков. Если вы выбрали управляемый диск в качестве диска ОС, убедитесь, что он имеет размер для поддержки требований операционной системы, системы Kubernetes и рабочей нагрузки. Дополнительные сведения о параметрах и различиях см. в разделе "Типы управляемых дисков Azure".

Данные приложений

Для хранения данных приложения для некоторых рабочих нагрузок требуется согласованное хранилище данных. Если приложению требуется база данных, рассмотрите возможность изучения управляемых баз данных в Azure, которые включают следующие параметры:

Решения для хранения в AKS

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

Решения на основе дисков

Диски или блочное хранилище идеально подходят для хранения данных непосредственно на низкоуровневом блочном устройстве. Хранилище на основе дисков идеально подходит для хранения данных в базах данных, которые размещены в вашем кластере Kubernetes. В Azure управляемые диски — это решение для получения блочного хранилища.

Эфемерные решения для дисков

Рассмотрите, требуется ли ваше приложение непрекращающееся, временное хранилище или где требуется использовать высокопроизводительные диски на виртуальных машинах, оптимизированных для хранения. Чтобы подключиться к эфемерному объему, можно использовать параметр emptyDir в Kubernetes или драйвер для эфемерного локального тома CSI. Мы рекомендуем emptyDir для временных данных, таких как временное пространство. Для хранения данных на серии виртуальных машин, оптимизированных для хранения, рекомендуется использовать CSI с эфемерным локальным томом. Для получения дополнительной информации о драйверах CSI см. драйверы интерфейса контейнерного хранилища (CSI) в службе Azure Kubernetes (AKS).

Хранилище контейнеров Azure

Хранилище контейнеров Azure — это облачная служба, предназначенная для управления томами, их развертывания и оркестрации. Эта служба изначально была создана для контейнеров. Если вы планируете использовать блочное хранилище с режимом ReadWriteOnce, используя диски Azure, временный диск или Azure Elastic SAN, хранилище контейнеров Azure предлагает преимущества прямого использования драйверов CSI:

  • Повышение производительности цен. Совместное использование одного диска на нескольких виртуальных компьютерах для снижения избыточной подготовки и снижения затрат.
  • Увеличение масштаба PV: поддерживает до 75 PV на узел, превосходя лимит в 64 PV с использованием драйверов CSI.
  • Локальное NVMe с репликацией: обеспечивает субмиллисекундную задержку и устойчивость для эфемерных дисков, идеально подходит для рабочих нагрузок с встроенной репликацией, таких как "Cassandra".
  • Быстрая подготовка и масштабирование: Пакетные операции ускоряют процесс предоставления и масштабирования томов по сравнению с последовательными операциями драйверов CSI.

Дополнительные сведения см. в статье "Что такое хранилище контейнеров Azure"?

Решения на основе файлов

Определите, требуется ли вашим pod доступ к общей файловой системе. Используйте общую файловую систему для данных приложения и конфигурации, которые несколько подов в вашем кластере Kubernetes должны читать и разделять. Хранилище файлов предоставляет общую файловую систему через протоколы NFS или SMB/Common Internet File System (CIFS). Azure предлагает два решения для файлового хранилища: файлы Azure и Azure NetApp Files.

Файлы Azure

Для файлов Azure рассмотрим следующие варианты:

  • Статический или динамически созданный файловый общий ресурс. Рекомендуется использовать статическую общую папку, созданную за пределами AKS или общей папки, которую AKS создает динамически от вашего имени. Дополнительные сведения можно найти здесь

  • Стандартная или премиальная производительность. Оцените, достаточна ли стандартная производительность или требуется ли производительность уровня "Премиум" из файлов Azure.

  • SMB/CIFS или NFS. Для доступа к файлам Azure оцените, должна ли рабочая нагрузка использовать API для протокола по умолчанию, SMB/CIFS или если для рабочей нагрузки требуется поддержка NFS.

  • Сетевая модель для доступа. Рассмотрим сетевую модель, которую вы хотите использовать для доступа к файлам Azure: доступ через прямой общедоступный IP-адрес, конечную точку службы или приватный канал.

Файлы Azure NetApp

Для Azure NetApp Files рассмотрим следующие варианты:

Хранилище данных типа BLOB

Рассмотрим объем неструктурированных данных, которые нужно хранить приложению. Хранилище BLOB-объектов Azure доступно через HTTP-API или с помощью пакетов SDK. Подключение хранилища блоб-данных в виде файловой системы в контейнер или под идеально подходит для рабочих нагрузок приложений, имеющих большие объемы неструктурированных данных, таких как файлы журнала, изображения, документы, потоковые мультимедиа и данные аварийного восстановления.

Другие решения для хранения

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

  • Кэш Azure HPC. HPC Cache ускоряет доступ к данным для задач высокопроизводительных вычислений (HPC). Azure HPC Cache обеспечивает масштабируемость облачных вычислений для имеющегося рабочего процесса благодаря кэшированию файлов в Azure. Дополнительные сведения см. в статье "Интеграция Azure HPC Cache с службой Azure Kubernetes".

  • Azure Data Lake Storage 2-го поколения. Data Lake Storage 2-го поколения — это особый тип хранилища BLOB-объектов, оптимизированного для рабочих нагрузок больших данных, таких как Hadoop и Spark. Дополнительные сведения см. в статье Введение в Azure Data Lake Storage Generation 2.

Рекомендации по проектированию

В этом разделе приведены рекомендации, действующие для клиентов Azure.

  • Используйте приватный канал Azure. Для обеспечения безопасности рекомендуется использовать Приватный канал Azure для всех решений хранилища, поддерживающих его. Приватный канал Azure обеспечивает доступ к службам Azure, таким как служба хранилища Azure и база данных SQL, а также размещенные в Azure службы через частную конечную точку в виртуальной сети. Дополнительные сведения см. в статье Что такое Приватный канал Azure.

  • Используйте временные диски для ОС. Для дисков ОС рекомендуется использовать временные диски. Чтобы воспользоваться этой функцией, выберите размер виртуальной машины с соответствующим размером временного диска. Дополнительные сведения см. в разделе " Временные диски ОС" для виртуальных машин Azure.

  • Используйте управляемые базы данных. Для данных приложения рекомендуется использовать управляемые базы данных. Список параметров базы данных см. в разделе "Типы баз данных" в Azure.

В следующих разделах описаны дополнительные рекомендации по дискам Azure, файлам Azure и хранилищу BLOB-объектов.

Использование хранилища контейнеров Azure

В следующих разделах содержатся рекомендации по использованию хранилища контейнеров Azure с AKS.

Требования к хранилищу контейнеров Azure

  • Предварительные требования к кластеру AKS: развертывание кластера AKS с как минимум тремя виртуальными машинами в пуле узлов, каждая с минимум четырьмя виртуальными ЦП.
  • Ограничения режима доступа: хранилище контейнеров Azure поддерживает только режим доступа ReadWriteOnce. Для рабочих нагрузок, требующих доступа ReadWriteMany, используйте вместо этого файлы Azure. Дополнительные сведения о режимах доступа см. в документации по Kubernetes.

Выбор правильного типа хранилища контейнеров Azure

  • Диски Azure. Используйте для баз данных уровня 1 и общего назначения, таких как MySQL, MongoDB и PostgreSQL. При использовании UltraSSD_LRS или PremiumV2_LRS дисков укажите параметры производительности (операции ввода-вывода в секунду и пропускную способность) непосредственно в определении пула носителей с параметрами IOPSReadWrite и MBpsReadWrite. Этот подход гарантирует, что хранилище контейнеров Azure подготавливает оптимальные ресурсы диска для ваших потребностей в производительности.

  • Диски Azure Ephemeral: лучше всего подходит для приложений, требующих низкой задержки (субмиллисекунда) без требований к устойчивости данных или встроенной репликации данных на уровне приложения (например, Cassandra). Данные на временных дисках не сохраняются при перезагрузке виртуальной машины. Хотя хранилище контейнеров Azure с NVMe поддерживает репликацию томов для обеспечения устойчивости к сбоям с одним узлом, данные теряются при одновременной перезагрузке всех реплик. Тщательно оцените этот риск для конкретной рабочей нагрузки. NVMe доступен на виртуальных машинах серии L, оптимизированных для хранения данных.

Настройка устойчивости хранилища контейнеров Azure

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

Подход к устойчивости Описание Лучше всего подходит для
зонально избыточное хранилище (ZRS) Автоматически реплицирует данные между двумя или более зонами доступности, чтобы защититься от сбоев зоны. Рабочие нагрузки, требующие автоматической защиты данных от сбоев на уровне зоны без репликации на уровне приложения.
Хранилища с несколькими зонами Распределяет емкость хранилища одинаково между зонами доступности, при этом каждая зона поддерживает собственные отдельные ресурсы хранилища. Рабочие нагрузки с репликацией на уровне приложения (например, Cassandra), которые уже управляют собственной избыточностью данных.

Замечание

Нельзя одновременно использовать ZRS и хранилища в нескольких зонах, поскольку они предназначены для похожих целей, но реализуют их через разные механизмы. Реализуйте регулярные моментальные снимки томов в рамках стратегии резервного копирования и аварийного восстановления независимо от выбранного подхода.

Диски Azure

Для дисков Azure рекомендуется использовать следующие варианты проектирования:

  • Используйте диски уровня "Премиум" или "Ультра". В большинстве случаев рекомендуется использовать диски ценовой категории "Премиум" или "Ультра", чтобы обеспечить достаточную производительность. Дополнительные сведения см. в разделе "Хранилище дисков Azure".

  • Размер узла для дисков и пропускной способности. Мы рекомендуем убедиться, что размер узла Kubernetes достаточно велик, чтобы поддерживать количество дисков и объем суммарной пропускной способности. Сведения о размерах и характеристиках см. в разделе "Размеры" для виртуальных машин в Azure.

  • Создавайте моментальные снимки постоянных томов Создайте моментальные снимки постоянных томов для копирования данных с целью резервного сохранения или восстановления томов в предыдущее состояние с помощью драйвера Azure Disks CSI. Дополнительные сведения см. в разделе "Моментальные снимки томов".

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

  • Используйте PV/PVC. Мы рекомендуем использовать PV и PVC в Kubernetes для динамического создания дисков, где это необходимо. Дополнительные сведения о постоянном хранилище см. в разделе "Параметры хранилища" для приложений в службе Azure Kubernetes (AKS).

Файлы Azure

Для файлов Azure рекомендуется использовать следующие варианты проектирования:

  • Выберите "Премиум". Если производительность важна, рекомендуется использовать уровень "Премиум".

  • Создание выделенных учетных записей хранения. Рекомендуется предоставлять выделенные учетные записи хранения для общих папок.

  • Выберите статические или динамически созданные общие папки. Рекомендуется внимательно обдумать, хотите ли вы, чтобы AKS создавал общие папки, или вам лучше создать их статически за пределами Kubernetes. Хранилище, созданное динамически, также можно удалить динамически. Дополнительные сведения о динамическом создании файловых ресурсов в AKS см. в статье Динамическое создание и использование постоянного тома с файлами Azure.

Файлы Azure NetApp

Для Azure NetApp Files рекомендуется использовать следующие варианты проектирования:

  • Выберите уровень производительности в зависимости от требований приложения. Azure NetApp Files предлагает три уровня производительности, которые предлагают различные классы производительности. Дополнительные сведения см. в статье Рекомендации по повышению производительности для Azure NetApp Files.

  • Создайте пулы емкости в том же регионе Azure, что и кластер AKS. Дополнительные сведения см. в статье "Создание пула емкости для Azure NetApp Files".

  • Для пулов емкости используйте тип Auto QoS.

  • Планирование сети. Для проектирования сети существуют два варианта:

    1. Если вы используете ту же виртуальную сеть для AKS и Azure NetApp Files, создайте выделенную подсеть для Azure NetApp Files и делегируйте подсеть Microsoft.NetApp/Volumes.
    2. При использовании разных виртуальных сетей установите пиринг между ними.

Хранилище данных типа BLOB

Для хранилища BLOB предлагаем использовать следующие варианты проектирования.

  • Используйте пакет SDK для взаимодействия с хранилищем. Рекомендуется использовать пакет SDK на уровне приложения для взаимодействия с хранилищем BLOB-объектов.

  • Используйте CSI с NFS для взаимодействия с хранилищем. Если вы не можете использовать пакет SDK на уровне приложения для интерфейса с хранением BLOB-объектов, мы рекомендуем использовать параметр NFS версии 3 в драйвере CSI хранилища BLOB-объектов. Дополнительные сведения см. в статье Об использовании драйвера CSI для хранилища BLOB-объектов Azure.

  • Используйте идентификатор Microsoft Entra для доступа. Мы рекомендуем использовать Microsoft Entra ID для авторизации доступа к хранилищу объектов Blob. Избегайте использования ключа учетной записи общего хранилища. Для получения дополнительной информации см. Авторизация доступа к BLOB-объектам с использованием Microsoft Entra ID.

  • Настройте уровни. Мы рекомендуем использовать политики управления жизненным циклом для перемещения редко используемых данных в более холодный класс доступа. Для получения дополнительной информации см. Горячие, холодные и архивные уровни доступа для данных блобов.

Дальнейшие действия

Узнайте, как ограничить распределение затрат на развертывание, службу, метку, pod или пространство имен в AKS с помощью Kubecost.