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


Размещение ресурсов в Операторе Azure Nexus Kubernetes

Экземпляры Nexus оператора развертываются в локальной среде клиента. Каждый экземпляр состоит из одной или нескольких стоек серверов без операционной системы.

Когда пользователь создает кластер Nexus Kubernetes (NKS), он указывает количество и единицу хранения запасов (SKU) для виртуальных машин, составляющих плоскость управления Kubernetes и один или несколько пулов агентов. Пулы агентов — это набор рабочих узлов, на которых выполняются контейнерные сетевые функции клиента.

Платформа Nexus отвечает за выбор сервера без операционной системы, на котором запускается каждая виртуальная машина NKS.

Как платформа Nexus планирует виртуальную машину кластера Nexus Kubernetes

Nexus сначала определяет набор потенциальных серверов без операционной системы, которые соответствуют всем требованиям к ресурсам SKU виртуальной машины NKS. Например, если пользователь указал номер SKU виртуальной NC_G48_224_v1 машины для пула агентов, Nexus собирает серверы без операционной системы, имеющие доступную емкость для 48 виртуальных ЦП, 224 ГИ ОЗУ и т. д.

Затем Nexus проверяет AvailabilityZones поле для запланированного пула агентов или плоскости управления. Если это поле не пусто, Nexus фильтрует список потенциальных серверов без операционной системы только для тех серверов в указанных зонах доступности (стойки). Это жесткое ограничение планирования. Если в отфильтрованном списке нет серверов без операционной системы, Nexus не планирует виртуальную машину NKS и кластер не выполняет подготовку.

После того как Nexus идентифицирует список потенциальных серверов без операционной системы, на которых будет размещена виртуальная машина NKS, Nexus затем выбирает один из серверов без операционной системы после применения следующих правил сортировки:

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

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

  3. Если номер SKU виртуальной машины NKS равен или предпочитает серверы без операционной системы, которые уже размещаются NC_G48_224_v1 NC_P46_224_v1NC_G48_224_v1 или NC_P46_224_v1 виртуальные машины NKS из других кластеров NKS. Другими словами, группировать дополнительные виртуальные машины из разных кластеров NKS на одних и тех же серверах без операционной системы. Это правило "пакеты bin" для дополнительных виртуальных машин с целью уменьшения фрагментации доступных вычислительных ресурсов.

Примеры сценариев размещения

В следующих разделах описано поведение, которое пользователи Nexus должны ожидать при создании кластеров NKS в среде Operator Nexus.

Указание. Вы можете увидеть, какой сервер без операционной системы планируется использовать виртуальные машины NKS, проверив nodes.bareMetalMachineId свойство ресурса NKS KubernetesCluster или просмотрев столбец Host в отображении узлов кластера Kubernetes на портале Azure.

Снимок экрана: сервер без операционной системы для виртуальных машин NKS.

В примере среды Operator Nexus приведены следующие спецификации:

  • Восемь стоек из 16 серверов без операционной системы
  • Каждый сервер без операционной системы содержит две ячейки без единого доступа к памяти (NUMA)
  • Каждая ячейка NUMA предоставляет 48 ЦП и 224 ГИ ОЗУ

Пустая среда

Учитывая пустую среду Оператора Nexus с заданной емкостью, мы создадим три разных размера кластеров Nexus Kubernetes.

Кластеры NKS имеют следующие спецификации, и мы предполагаем в целях этого упражнения, что пользователь создает три кластера в следующем порядке:

Кластер А

  • Плоскость управления, NC_G12_56_v1 SKU, три счетчика
  • Пул агентов #1, NC_P46_224_v1 SKU, 24 count
  • Пул агентов #2, SKU, NC_G6_28_v1 шесть счетчиков

Кластер Б

  • Плоскость управления, SKU, NC_G24_112_v1 пять счетчиков
  • Пул агентов #1, NC_P46_224_v1 SKU, 48 count
  • Пул агентов #2, NC_P22_112_v1 SKU, 24 счетчика

Кластер C

  • Плоскость управления, NC_G12_56_v1 SKU, три счетчика
  • Пул агентов #1, NC_P46_224_v1 SKU, 12 count, AvailabilityZones = [1,4]

Ниже приведена таблица с описанием того, что должен видеть пользователь после запуска кластеров A, B и C в пустой среде Оператора Nexus.

Кластер Пул Номер SKU Общее количество Ожидаемые стойки # Фактические стойки # Ожидаемые виртуальные машины # на стойку Фактические виртуальные машины # на стойку
а Уровень управления NC_G12_56_v1 3 3 3 1 1
а Пул агентов #1 NC_P46_224_v1 24 8 8 3 3
а Пул агентов #2 NC_G6_28_v1 6 6 6 1 1
Б Уровень управления NC_G24_112_v1 5 5 5 1 1
Б Пул агентов #1 NC_P46_224_v1 48 8 8 6 6
Б Пул агентов #2 NC_P22_112_v1 24 8 8 3 3
C Уровень управления NC_G12_56_v1 3 3 3 1 1
C Пул агентов #1 NC_P46_224_v1 12 2 2 6 6

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

В пуле агентов кластера C #1 есть 12 виртуальных машин, ограниченных доступностью [1, 4], поэтому она имеет 12 виртуальных машин на 12 серверах без операционной системы, шесть в каждой из стоек 1 и 4.

Дополнительные виртуальные машины ( NC_P46_224_v1 SKU) из разных кластеров размещаются на одном и том же сервере без операционной системы (см. правило #3 в том, как платформа Nexus планирует виртуальную машину кластера Nexus Kubernetes).

Ниже приведена визуализация макета, которую пользователь может увидеть после развертывания кластеров A, B и C в пустой среде.

Схема, показывающая возможный макет виртуальных машин после первого развертывания.

Полуфункционная среда

Теперь мы работаем с примером запуска другого кластера NKS, когда целевая среда полна. Целевая среда полностью заполнена после развертывания кластеров A, B и C в целевой среде.

Кластер D имеет следующие спецификации:

  • Плоскость управления, SKU, NC_G24_112_v1 пять счетчиков
  • Пул агентов #1, NC_P46_224_v1 SKU, 24 count, AvailabilityZones = [7,8]
  • Пул агентов #2, NC_P22_112_v1 SKU, 24 счетчика

Ниже приведена таблица, в которой приведены сведения о том, что пользователь должен видеть после запуска Cluster D в полуполную среду Оператора Nexus, которая существует после запуска кластеров A, B и C.

Кластер Пул Номер SKU Общее количество Ожидаемые стойки # Фактические стойки # Ожидаемые виртуальные машины # на стойку Фактические виртуальные машины # на стойку
D Уровень управления NC_G12_56_v1 5 5 5 1 1
D Пул агентов #1 NC_P46_224_v1 24 2 2 12 12
D Пул агентов #2 NC_P22_112_v1 24 8 8 3 3

Пул агентов кластера D #1 имеет 12 виртуальных машин, ограниченных для availabilityZones [7, 8], поэтому он имеет 12 виртуальных машин на 12 серверах без операционной системы, шесть в каждой из стоек 7 и 8. Эти виртуальные машины приземлились на серверах без операционной системы также размещения дополнительных виртуальных машин из других кластеров из-за правила сортировки, которое группирует дополнительные большие виртуальные машины из разных кластеров на одних и тех же серверах без операционной системы.

Если виртуальная машина уровня управления Кластер D приземляется на стойку 7 или 8, скорее всего, одна виртуальная машина кластера D агентов #1 приземляется на том же сервере без операционной системы, что и виртуальная машина плоскости управления Кластера D. Это происходит из-за того, что пул агентов #1 "закреплен" на стойки 7 и 8. Ограничения емкости в этих стойких приводят к тому, что планировщик будет объединять виртуальную машину уровня управления и пул агента #1 из того же кластера NKS.

Пул агентов кластера D 2 содержит три виртуальных машины на разных серверах без операционной системы на каждой из восьми стоек. Ограничения емкости привели к закреплению пула агентов кластера D 1 на стойки 7 и 8. Поэтому виртуальные машины из пула агентов кластера D #1 и пула агентов #2 объединяются на одних и том же серверах без операционной системы в стойких 7 и 8.

Ниже приведена визуализация макета, которую пользователь может увидеть после развертывания Cluster D в целевой среде.

Схема, показывающая возможный макет виртуальных машин после второго развертывания.

Почти полная среда

В нашем примере целевой среды четыре из восьми стоек близки к емкости. Давайте попробуем запустить другой кластер NKS.

Кластер E имеет следующие спецификации:

  • Плоскость управления, SKU, NC_G24_112_v1 пять счетчиков
  • Пул агентов #1, NC_P46_224_v1 SKU, 32 count

Ниже приведена таблица, в которой приведены сведения о том, что пользователь должен видеть после запуска Cluster E в целевой среде.

Кластер Пул Номер SKU Общее количество Ожидаемые стойки # Фактические стойки # Ожидаемые виртуальные машины # на стойку Фактические виртуальные машины # на стойку
E Уровень управления NC_G24_112_v1 5 5 5 1 1
E Пул агентов #1 NC_P46_224_v1 32 8 8 4 3, 4 или 5

Пул агентов кластера E #1 будет распределяться неравномерно по всем восьми стойкам. Стойки 7 и 8 будут иметь три виртуальных машины NKS из пула агентов #1 вместо ожидаемых четырех виртуальных машин NKS, так как в этих стойких виртуальных машинах больше нет емкости для виртуальных машин SKU с дополнительными размерами SKU после планирования кластеров A до D. Так как стойки 7 и 8 не имеют емкости для четвертого дополнительного номера SKU в пуле агентов #1, пять виртуальных машин NKS будут приземлиться на двух наименее используемых стойких. В нашем примере эти наименее используемые стойки были стойками 3 и 6.

Ниже приведена визуализация макета, которую пользователь может увидеть после развертывания Cluster E в целевой среде.

Схема, показывающая возможный макет виртуальных машин после третьего развертывания.

Размещение во время обновления среды выполнения

По состоянию на апрель 2024 г. (выпуск Network Cloud 2304.1) обновление среды выполнения выполняется с помощью стратегии по стойке. Серверы без операционной системы в стойке 1 переимываются сразу. Процесс обновления приостанавливается до тех пор, пока все серверы без операционной системы успешно перезагрузятся и сообщают Nexus, что они готовы к получению рабочих нагрузок.

Примечание.

Оператор Nexus можно указать оператору Nexus только повторно создать часть серверов без операционной системы в стойке одновременно, однако по умолчанию необходимо повторно использовать все серверы без операционной системы в стойке параллельно.

При повторном использовании отдельного сервера без операционной системы все рабочие нагрузки, работающие на этом сервере без операционной системы, включая все виртуальные машины NKS, теряют мощность и подключение. Контейнеры рабочей нагрузки, работающие на виртуальных машинах NKS, в свою очередь теряют мощность и подключение. Через одну минуту после того, как они не смогут достичь этих контейнеров рабочей нагрузки, плоскость управления Kubernetes кластера NKS помечает соответствующие модули Pod как неработоспособные. Если модули pod являются членами развертывания или StatefulSet, то группа управления Kubernetes кластера NKS пытается запустить замены pod, чтобы вернуть наблюдаемое количество реплик развертывания или statefulSet обратно к требуемому количеству реплик.

Новые модули Pod запускают только в том случае, если в оставшихся работоспособных виртуальных машинах NKS доступной емкости. По состоянию на апрель 2024 г. (выпуск Network Cloud 2304.1) новые виртуальные машины NKS не создаются для замены виртуальных машин NKS, которые находились на сервере без операционной системы.

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

Примечание.

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

Рекомендации

При работе с Оператором Nexus следует учитывать следующие рекомендации.

  • Избегайте указания AvailabilityZones для пула агентов.
  • Запустите более крупные кластеры NKS до меньших кластеров.
  • Уменьшите число пулов агентов перед уменьшением размера номера SKU виртуальной машины.

Избегайте указания групп доступности для пула агентов

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

Поэтому мы рекомендуем избежать указания AvailabilityZones пула агентов. Если требуется закрепление пула агентов к набору Зоны доступности, сделайте это максимально большим, чтобы свести к минимуму дисбаланс, который может произойти.

Единственное исключение из этой рекомендации заключается в наличии сценария только с двумя или тремя виртуальными машинами в пуле агентов. Вы можете задать для AvailabilityZones этого пула [1,3,5,7] [0,2,4,6] агентов или увеличить доступность во время обновлений среды выполнения.

Запуск больших кластеров NKS до меньших кластеров

По состоянию на апрель 2024 г. и выпуск Network Cloud 2403.1 кластеры NKS планируются в порядке их создания. Чтобы наиболее эффективно упаковать целевую среду, мы рекомендуем создать более крупные кластеры NKS перед меньшими. Аналогичным образом мы рекомендуем запланировать более крупные пулы агентов перед меньшими.

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

Уменьшите количество пулов агентов, прежде чем уменьшить размер номера SKU виртуальной машины

Если при запуске кластера или пула агентов NKS возникают ограничения емкости, уменьшите количество пулов агентов перед настройкой размера SKU виртуальной машины. Например, если вы попытаетесь создать кластер NKS с пулом агентов с размером NC_P46_224_v1 SKU виртуальной машины и числом 24, а также вернуться к сбою подготовки кластера NKS из-за нехватки ресурсов, может потребоваться использовать размер NC_P36_168_v1 SKU виртуальной машины и продолжить с числом 24. Однако из-за требований к виртуальным машинам рабочей нагрузки, которые должны быть выровнены с одной ячейкой NUMA на сервере без операционной системы, скорее всего, тот же запрос приводит к аналогичным недостаточным сбоям ресурсов. Вместо уменьшения размера SKU виртуальной машины рекомендуется уменьшить число пула агентов до 20. Существует более высокая вероятность того, что запрос помещается в емкость ресурсов целевой среды, а общее развертывание имеет больше ядер ЦП, чем если вы сократили номер SKU виртуальной машины.

SKU виртуальных машин, оптимизированных для памяти

NC_E94_448_v1 использует все доступные клиентом ресурсы физического компьютера. NC_E70_336_v1 потребляет 75% ресурсов, доступных для клиентов, однако это не гарантирует, что это будет ровно одно и половина ячеек NUMA. Это означает, что NC_G24_112_v1 может или не может планировать работу на компьютере с NC_E70_336_v1 в зависимости от планирования NC_E70_336_v1 виртуальной машины в ячейках NUMA.