Развертывание кластера Kubernetes в пользовательской виртуальной сети Azure Stack Hub
Кластер Kubernetes можно развернуть с помощью подсистемы Служба Azure Kubernetes (AKS) в пользовательской виртуальной сети. В этой статье рассматривается поиск необходимых сведений в виртуальной сети. Вы можете найти шаги по вычислению IP-адресов, используемых кластером, настройке vales в модели API и настройке таблицы маршрутов и группы безопасности сети.
Кластер Kubernetes в Azure Stack Hub с помощью обработчика AKS использует подключаемый модуль сети kubenet. Обработчик AKS в Azure Stack Hub также поддерживает подключаемый модуль сети Azure CNI.
- For a discussion of the kubenet networking plugin in Azure, see Use kubenet networking with your own IP address ranges in Azure Kubernetes Service (AKS).
- Обсуждение подключаемого модуля сети Azure CNI в Azure см. в статье "Настройка сети Azure CNI" в Служба Azure Kubernetes (AKS).
Ограничения при создании настраиваемой виртуальной сети
- Пользовательская виртуальная сеть должна находиться в той же подписке, что и все остальные компоненты кластера Kubernetes.
- Пул узлов уровня управления и пул узлов агента должны находиться в одной виртуальной сети. Узлы можно развернуть в разных подсетях в одной виртуальной сети.
- Подсеть кластера Kubernetes должна использовать диапазон IP-адресов в пространстве диапазона IP-адресов настраиваемой виртуальной сети, см. раздел "Получение блока IP-адресов".
- Рекомендуемый размер подсетей узла зависит от типа используемого подключаемого модуля сети. В качестве общего руководства Azure CNI требуется больше IP-адресов для подсети, поддерживающей пулы узлов агента, чем kubenet. См. примеры kubenet и Azure CNI ниже.
- Адресное
169.254.0.0/16пространство не может использоваться для пользовательских виртуальных сетей для кластеров Kubernetes.
Создание пользовательской виртуальной сети
У вас должна быть настраиваемая виртуальная сеть в экземпляре Azure Stack Hub. Дополнительные сведения см. в кратком руководстве по созданию виртуальной сети с помощью портал Azure.
Создайте новую подсеть в виртуальной сети. Вам потребуется получить идентификатор ресурса подсети и диапазон IP-адресов. При развертывании кластера вы будете использовать идентификатор ресурса и диапазон в модели API.
Откройте пользовательский портал Azure Stack Hub в экземпляре Azure Stack Hub.
Щелкните Все ресурсы.
Введите имя виртуальной сети в поле поиска.
Выберите подсети>+ Подсети, чтобы добавить подсеть.
Добавьте имя и диапазон адресов с помощью нотации CIDR. Щелкните ОК.
Выберите "Свойства " в колонке "Виртуальные сети ". Скопируйте идентификатор ресурса и добавьте
/subnets/<nameofyoursubnect>. Это значение будет использоваться в качестве значения ключаvnetSubnetIdв модели API для кластера. Идентификатор ресурса для подсети использует следующий формат:/subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME
Выберите подсети в колонке "Виртуальные сети ". Выберите имя подсети, например
control-plane-sn.Не свяжите подсеть с группой безопасности сети (NSG).

В колонке подсети запишите диапазон адресов (блок CIDR) каждой подсети.
Рекомендации по выбору адресного пространства
При создании настраиваемой виртуальной сети необходимо указать пространство IP-адресов сети и диапазон IP-адресов для каждой подсети. При выборе адресных пространств и диапазонов для использования в кластере Kubernetes учитывайте следующие факторы:
- Перекрывающиеся адресные пространства могут привести к столкновениям IP-адресов или ошибкам связи. Чтобы снизить риск перекрытия IP-адресов, выберите уникальное адресное пространство для новой виртуальной сети.
- Адресные пространства в
10/8диапазонах и192.168/16диапазонах172.16/12часто используются для частных сетей, и они могут использоваться существующей инфраструктурой центра обработки данных. Если приложения Kubernetes используют ресурсы в центре обработки данных, уменьшите риск столкновений, выбрав адресное пространство для пользовательской виртуальной сети, отличное от адресного пространства вашего центра обработки данных. - Рекомендуется использовать выделенную подсеть для кластера Kubernetes.
- Если вы используете несколько существующих виртуальных сетей, рассмотрите возможность использования разных адресных пространств в каждой сети, если планируется использовать пиринг между виртуальными сетями. Перекрывающиеся адресные пространства могут ухудшить возможность включения пиринга.
Получение блоков IP-адресов
Обработчик AKS поддерживает развертывание в существующей виртуальной сети. При развертывании в существующей виртуальной сети кластер будет использовать блоки последовательных адресов для узлов агента, узлов уровня управления, служб кластера и контейнеров (pod). Каждый блок адресов можно преобразовать в подсеть в виртуальной сети. Все блоки адресов в развертывании кластера должны быть частью общего адресного пространства виртуальной сети, выбор блоков адресов за пределами адресного пространства виртуальной сети может привести к проблемам с подключением.
При настройке кластера Kubernetes требуется не менее трех блоков адресов:
- Блок адресов узлов: это блок адресов, используемый для назначения адресов узлам кластера. Это может быть один блок адресов для всех узлов кластера или отдельные блоки (подсети) для пулов управляющих и агентов. Учитывайте количество узлов в кластере при выборе диапазона адресов для этого блока. Для узлов и контейнеров Azure CNI адреса получаются из одного блока адресов, поэтому учитывайте количество контейнеров, которые необходимо развернуть в кластере при выборе диапазона адресов при использовании Azure CNI.
- Блок адресов служб: это блок адресов, из которого службы, развернутые в кластере Kubernetes, получат адрес кластера. При выборе диапазона адресов для этого блока учитывайте максимальное количество служб, которые планируется запустить в кластере.
- Блок адресов кластера: это блок адресов, из которого модули pod получат свой адрес кластера. При выборе диапазона адресов для этого блока учитывайте максимальное число модулей pod, которые планируется запускать в кластере. Как упоминалось ранее, для Azure CNI кластер и блоки адресов узлов одинаковы.
Помимо блоков адресов, для узлов плоскости управления необходимо задать еще два значения. Необходимо знать количество IP-адресов, которые необходимо зарезервировать для кластера, и первый последовательный статический IP-адрес в пространстве IP-адресов подсети. Обработчик AKS требует до 16 неиспользуемых IP-адресов при использовании нескольких узлов уровня управления. Кластер будет использовать один IP-адрес для каждого уровня управления до пяти узлов плоскости управления. Обработчик AKS также потребует следующего 10 IP-адресов после последнего узла плоскости управления для резервирования IP-адресов в головном зале. Наконец, другой IP-адрес будет использоваться подсистемой балансировки нагрузки после узлов плоскости управления и резервирования головного зала в общей сложности 16. При размещении блока IP-адресов подсеть требуется следующее выделение существующих IP-адресов:
- Первые четыре IP-адреса и последний IP-адрес зарезервированы и не могут использоваться в любой подсети Azure.
- Буфер из 16 IP-адресов должен оставаться открытым.
- Значение первого IP-адреса кластера должно быть в конце адресного пространства, чтобы избежать конфликтов IP-адресов. По возможности назначьте свойству
firstConsecutiveStaticIPIP-адрес в конце доступного пространства IP-адресов в подсети.
Например, для кластера с тремя узлами уровня управления. Если вы используете подсеть с 256 адресами, например 10.100.0.0/24, необходимо задать первый последовательный статический IP-адрес до 239. В следующей таблице показаны адреса и рекомендации.
| Диапазон для подсети /24 | Число | Примечание |
|---|---|---|
| 172.100.0.0 - 172.100.0.3 | 4 | Зарезервировано в подсети Azure. |
| 172.100.0.224-172.100.0.238 | 14 | Число IP-адресов для определенного кластера обработчика AKS. 3 IP-адреса для 3 узлов уровня управления 10 IP-адресов для головного помещения 1 IP-адрес подсистемы балансировки нагрузки |
| 172.100.0.238 - 172.100.0.254 | 16 | Буфер IP-адресов 16. |
| 172.100.0.255 | 1 | Зарезервировано в подсети Azure. |
В этом примере свойство firstConsecutiveStaticIP будет иметь значение 172.100.0.224.
Для больших подсетей, например /16 с более чем 60 тысячами адресов, вы можете не найти, чтобы задать статические назначения IP-адресов в конце сетевого пространства. Задайте диапазон статических IP-адресов кластера от первых 24 адресов в пространстве IP, чтобы кластер был устойчивым при утверждении адресов.
Пример блоков адресов Kubenet
В следующем примере показано, как эти различные рекомендации заполняют адресное пространство в виртуальной сети для кластера с помощью подключаемого модуля сети kubenet с выделенными подсетями для узла уровня управления и пулов узлов агента с тремя узлами на пул.
Адресное пространство виртуальной сети: 10.100.0.0/16.
| Блок адресов (подсеть) | CIDR | Диапазон IP-адресов | Число IP-адресов (доступно) |
|---|---|---|---|
| Блок узлов плоскости управления | 10.100.0.0/24 | 10.100.0.0 - 10.100.0.255 | 255 - 4 зарезервировано = 251 |
| Блок узлов агента | 10.100.1.0/24 | 10.100.1.0 - 10.100.1.255 | 255 - 4 зарезервировано = 251 |
| Блок служб | 10.100.16.0/20 | 10.100.16.0 - 10.100.31.255 | 4096 - 5 зарезервированных = 4091 |
| Блок кластера | 10.100.128.0/17 | 10.100.128.0 - 10.100.255.255 | 32 768 - 5 зарезервированных = 32 763 |
В этом примере firstConsecutiveStaticIP свойство будет иметь значение 10.100.0.239.
Пример блоков адресов Azure CNI
В следующем примере показано, как эти различные рекомендации заполняют адресное пространство в виртуальной сети для кластера с помощью подключаемого модуля сети Azure CNI с выделенными подсетями для пулов узлов управления и агентов с тремя узлами на пул.
Адресное пространство виртуальной сети: 172.24.0.0/16.
| Блок адресов (подсеть) | CIDR | Диапазон IP-адресов | Число IP-адресов (доступно) |
|---|---|---|---|
| Блок узлов плоскости управления | 172.24.0.0/24 | 172.24.0.0 - 172.24.0.255 | 255 - 4 зарезервировано = 251 |
| Блок кластера узлов & агента | 172.24.128.0/17 | 172.24.128.0 - 172.24.255.255 | 32 768 - 5 зарезервированных = 32 763 |
| Блок служб | 172.24.16.0/20 | 172.24.16.0 - 172.24.31.255 | 4096 - 5 зарезервированных = 4091 |
В этом примере firstConsecutiveStaticIP свойство будет иметь значение 172.24.0.239.
Обновление модели API
Обновите модель API, используемую для развертывания кластера из обработчика AKS в пользовательской виртуальной сети.
В masterProfile задайте следующие значения:
| Поле | Пример | Описание |
|---|---|---|
| vnetSubnetId | /subscriptions/77e28b6a-582f-42b0-94d2-93b9eca60845/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn |
Укажите идентификатор пути azure Resource Manager подсети. Это значение сопоставляется с указанным выше блоком адресов узлов плоскости управления. |
| firstConsecutiveStaticIP | 10.100.0.239 | Назначьте свойству firstConsecutiveStaticIP конфигурации IP-адрес, расположенный ближе к концу доступного пространства IP-адресов в нужной подсети. firstConsecutiveStaticIP применяется только к пулу узлов уровня управления. |
В agentPoolProfiles задайте следующие значения:
| Поле | Пример | Описание |
|---|---|---|
| vnetSubnetId | /subscriptions/77e28b6a-582f-42b0-94d2-93b9eca60845/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn |
Укажите идентификатор пути azure Resource Manager подсети. Это значение сопоставляется с указанным выше блоком адресов узлов агента. |
В orchestratorProfile найдите kubernetesConfig и задайте следующее значение:
| Поле | Пример | Описание |
|---|---|---|
| clusterSubnet | 10.100.128.0/17 |
IP-подсеть, используемая для выделения IP-адресов для сетевых интерфейсов pod. Это значение сопоставляется с блоком адресов кластера выше. Подсеть должна находиться в адресном пространстве виртуальной сети. При включении Azure CNI значение по умолчанию — 10.240.0.0/12. Без Azure CNI значение по умолчанию — 10.244.0.0/16. Используйте /16 вместо /24 подсети. При использовании /24 эта подсеть будет назначена только одному узлу. Другой узел не получит назначение сети POD, так как у вас будет недостаточно ip-пространства, поэтому они не будут готовы в кластере. |
| serviceCidr | 10.100.16.0/20 |
IP-подсеть, используемая для выделения IP-адресов для служб, развернутых в кластере. Это значение сопоставляется с приведенным выше блоком служб кластера. |
| dnsServiceIP | 10.100.16.10 |
IP-адрес, назначенный службе DNS кластера. Адрес должен поступать из подсети serviceCidr. Это значение необходимо задать при указании serviceCidr. Значение по умолчанию — 10-адрес подсети serviceCidr. |
Например, при использовании kubenet:
С адресным пространством сети, в 10.100.0.0/16 котором находится подсеть и control-plane-snagents-sn находится 10.100.0.0/2410.100.1.0/24
"masterProfile": {
...
"vnetSubnetId": "/subscriptions/77e28b6a-582f-42b0-94d2-93b9eca60845/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
"firstConsecutiveStaticIP": "10.100.0.239",
...
},
...
"agentPoolProfiles": [
{
...
"vnetSubnetId": "/subscriptions/77e28b6a-582f-42b0-94d2-93b9eca60845/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn",
...
},
...
"kubernetesConfig": [
{
...
"clusterSubnet": "10.100.128.0/17",
"serviceCidr": "10.100.16.0/20",
"dnsServiceIP" : "10.100.16.10",
...
},
Например, при использовании Azure CNI:
С адресным пространством сети, в 172.24.0.0/16 котором находится подсеть и control-plane-snk8s-sn находится 172.24.0.0/24172.24.128.0/17
"masterProfile": {
...
"vnetSubnetId": "/subscriptions/77e28b6a-582f-42b0-94d2-93b9eca60845/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
"firstConsecutiveStaticIP": "172.24.0.239",
...
},
...
"agentPoolProfiles": [
{
...
"vnetSubnetId": "/subscriptions/77e28b6a-582f-42b0-94d2-93b9eca60845/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/k8s-sn",
...
},
...
"kubernetesConfig": [
{
...
"clusterSubnet": "172.24.128.0/17",
"serviceCidr": "172.24.16.0/20",
"dnsServiceIP" : "172.24.16.10",
...
},
Развертывание кластера
После добавления значений в модель API можно развернуть кластер с клиентского компьютера с помощью команды с помощью deploy обработчика AKS. Инструкции см. в разделе "Развертывание кластера Kubernetes".
Настройка таблицы маршрутов
Например, если вы используете kubenet: networkPluginkubenet в объекте kubernetesConfig конфигурации модели API. После развертывания кластера вернитесь в виртуальную сеть на пользовательском портале Azure Stack. Задайте таблицу маршрутов и группу безопасности сети (NSG) в колонке подсети. После успешного развертывания кластера в пользовательской виртуальной сети получите идентификатор ресурса таблицы маршрутов из колонки "Сеть " в группе ресурсов кластера.
Откройте пользовательский портал Azure Stack Hub в экземпляре Azure Stack Hub.
Щелкните Все ресурсы.
Введите имя виртуальной сети в поле поиска.
Выберите подсети и выберите имя подсети, содержащей кластер.

Выберите таблицу маршрутов и выберите таблицу маршрутов для кластера.
Примечание
У пользовательской виртуальной сети для кластера Kubernetes Windows возникла известная проблема.
Дальнейшие действия
- См. сведения об обработчике AKS в Azure Stack Hub.
- См. сведения об использовании службы Azure Monitor для контейнеров.