Создание частного кластера Служба Azure Kubernetes (AKS)

В частном кластере уровень управления или сервер API имеют внутренние IP-адреса, определенные в документе RFC1918. Распределение адресов в частных IP-сетях. Используя частный кластер, можно гарантировать, что сетевой трафик между сервером API и пулами узлов всегда остается в частной сети.

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

При подготовке частного кластера AKS по умолчанию AKS создает частное полное доменное имя с частной зоной DNS и дополнительным общедоступным полным доменным именем с соответствующей записью A в общедоступном DNS-сервере Azure. Узлы агента продолжают использовать запись A в частной зоне DNS для разрешения частного IP-адреса частной конечной точки для связи с сервером API.

Цель этой статьи — помочь развернуть кластер AKS на основе приватного канала. Если вы хотите создать кластер AKS без обязательного приватного канала или туннеля, ознакомьтесь с созданием кластера Служба Azure Kubernetes с интеграцией виртуальной сети API Server (предварительная версия).

Доступность по регионам

Частный кластер доступен в общедоступных регионах, Azure для государственных организаций и Microsoft Azure, управляемых регионами 21Vianet, где поддерживается AKS.

Необходимые компоненты

  • Azure CLI версии 2.28.0 и выше. Запустите az --version, чтобы определить версию и запустите az upgrade для обновления версии. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
  • Расширение aks-preview 0.5.29 или более поздней версии.
  • При использовании Azure Resource Manager (ARM) или REST API Azure версия API AKS должна быть 2021-05-01 или выше.
  • служба Приватный канал Azure поддерживается только в Azure Load Balancer уровня "Стандартный". Azure Load Balancer цен. категории "Базовый" не поддерживается.
  • Чтобы использовать пользовательский DNS-сервер, добавьте общедоступный IP-адрес Azure 168.63.129.16 в качестве вышестоящий DNS-сервера в пользовательском DNS-сервере и обязательно добавьте этот общедоступный IP-адрес в качестве первого DNS-сервера. Дополнительные сведения об IP-адресе Azure см. в статье "Что такое IP-адрес 168.63.129.16?"
    • Зона DNS кластера должна быть то, что вы перенаправите на 168.63.129.16. Дополнительные сведения о именах зон можно найти в конфигурации зоны DNS служб Azure.

Примечание.

Пул узлов Linux Azure теперь общедоступен (общедоступная версия). Дополнительные сведения о преимуществах и действиях по развертыванию см. в статье "Общие сведения о узле контейнеров Linux Azure для AKS".

Ограничения

  • Авторизованные диапазоны IP-адресов нельзя применить к конечной точке частного сервера API: они применимы только к общедоступным серверам API.
  • Ограничения службы Приватного канала Azure применимы к частным кластерам.
  • Нет поддержки размещенных в Майкрософт агентов Azure DevOps с частными кластерами. Рассмотрите возможность использования локальных агентов.
  • Если необходимо включить реестр контейнеров Azure для работы с частным кластером AKS, настройте приватный канал для реестра контейнеров в виртуальной сети кластера или настройте пиринг между виртуальной сетью реестра контейнеров и виртуальной сетью частного кластера.
  • Нет поддержки преобразования существующих кластеров AKS в частные кластеры.
  • Удаление или изменение частной конечной точки в подсети клиента приведет к прекращению работы кластера.

Создание частного кластера AKS

Создание или изменение группы ресурсов

Создайте группу ресурсов с помощью az group create команды. Вы также можете использовать существующую группу ресурсов для кластера AKS.

az group create -l eastus -n myResourceGroup

Базовое сетевое взаимодействие по умолчанию

Создайте частный кластер с базовой сетью по умолчанию с помощью az aks create команды с флагом --enable-private-cluster .

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster  

Улучшенные сетевые функции

Создайте частный кластер с расширенными сетями с помощью az aks create команды со следующими флагами:

az aks create \
    --resource-group <private-cluster-resource-group> \
    --name <private-cluster-name> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 

Использование личных доменов

Если вы хотите настроить пользовательские домены, которые могут быть разрешены только внутри системы, см. раздел "Использование пользовательских доменов".

Отключение общедоступного полного доменного имени

Отключение общедоступного полного доменного имени в новом кластере AKS

Отключите общедоступное полное доменное имя при создании частного кластера AKS с помощью флага --disable-public-fqdn .

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <private-dns-zone-mode> --disable-public-fqdn

Отключение общедоступного полного доменного имени в существующем кластере

Отключите общедоступное полное доменное имя в существующем кластере AKS с помощью az aks update команды с флагом --disable-public-fqdn .

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --disable-public-fqdn

Настройка частной зоны DNS

Частные зоны DNS можно настроить с помощью следующих параметров:

  • система: это значение по умолчанию. --private-dns-zone Если аргумент опущен, AKS создает частную зону DNS в группе ресурсов узла.
  • нет: по умолчанию используется общедоступная СЛУЖБА DNS. AKS не создаст частную зону DNS.
  • CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID. Это требует создания частной зоны DNS в следующем формате для глобального облака Azure. privatelink.<region>.azmk8s.io<subzone>.privatelink.<region>.azmk8s.io Для дальнейшего использования потребуется идентификатор ресурса частной зоны DNS. Кроме того, вам потребуется назначаемое пользователем удостоверение или субъект-служба с ролями участника Частная зона DNS зоны и участника сети. При развертывании с помощью интеграции виртуальной сети сервера API частная зона DNS поддерживает формат private.<region>.azmk8s.io именования или <subzone>.private.<region>.azmk8s.io.
    • Если частная зона DNS находится в подписке, отличной от кластера AKS, необходимо зарегистрировать поставщик Microsoft.ContainerServices в обеих подписках.
    • "fqdn-subdomain" можно использовать только с параметром "CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID" только для предоставления возможностей privatelink.<region>.azmk8s.ioподдомена.
    • Если кластер AKS настроен с субъектом-службой Active Directory, AKS не поддерживает использование управляемого удостоверения, назначаемого системой, с настраиваемой частной зоной DNS.
    • Если вы указываете <subzone> ограничение на 32 символов <subzone> для имени.

Примечание.

CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID можно настроить с помощью шаблона ARM в дополнение к Azure CLI. privateDNSZone принимает частный идентификатор ресурса зоны DNZ, как показано в следующем примере:

properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}

Внимание

После создания кластера невозможно изменить CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID и удалить его невозможно. В противном случае кластер будет иметь проблемы с выполнением операций обновления.

Создание частного кластера AKS с частной зоной DNS

Создайте частный кластер AKS с частной зоной DNS с помощью az aks create команды со следующими флагами:

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone [system|none]

Создание частного кластера AKS с настраиваемой частной зоной DNS или частной подзоной DNS

Создайте частный кластер AKS с настраиваемой частной зоной DNS или подзоной az aks create , используя команду со следующими флагами:

# The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone or custom private dns subzone resourceID>

Создание частного кластера AKS с настраиваемой частной зоной DNS и пользовательским поддоменом

Создайте частный кластер AKS с настраиваемой частной зоной DNS и поддоменом az aks create с помощью команды со следующими флагами:

# The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone resourceID> --fqdn-subdomain <subdomain>

Обновление частного кластера из частной зоны DNS до общедоступной

Примечание.

Для этой функции требуется aks-preview версия >расширения = 0.5.97

Обновите частный кластер из byo команды или systemnone с помощью az aks update следующих флагов:

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --private-dns-zone none

Примечание.

Вы можете обновить только от byo или system до none. Никакое другое сочетание значений обновления не поддерживается.

Варианты подключения к частному кластеру

Конечная точка сервера API не имеет общедоступного IP-адреса. Для управления сервером API необходимо использовать виртуальную машину, имеющую доступ к виртуальной сети Azure кластера AKS. Существует несколько вариантов установления сетевого подключения к частному кластеру:

Примечание.

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

Пиринг между виртуальными сетями

Пиринг между виртуальными сетями — один из способов доступа к частному кластеру. Чтобы использовать пиринг между виртуальной сетью, необходимо настроить связь между виртуальной сетью и частной зоной DNS.

  1. В браузере перейдите на портал Azure.
  2. В портал Azure перейдите в группу ресурсов узла.
  3. Выберите частную зону DNS.
  4. В левой области выберите виртуальную сеть.
  5. Создайте новую ссылку, чтобы добавить виртуальную сеть виртуальной машины в частную зону DNS. Ссылка на зону DNS станет доступной через несколько минут.
  6. На портале Azure перейдите к группе ресурсов, содержащей виртуальную сеть вашего кластера.
  7. В области справа выберите виртуальную сеть. Имя виртуальной сети указано в формате aks-vnet-*.
  8. В левой области выберите Пиринг.
  9. Нажмите Добавить, добавьте виртуальную сеть виртуальной машины, а затем создайте пиринг. Дополнительные сведения см. в статье Пиринг между виртуальными сетями.

Звездообразная архитектура с настраиваемым DNS

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

Private cluster hub and spoke

  • При подготовке частного кластера частная конечная точка (1) и частная зона DNS (2) создаются в группе ресурсов, управляемой кластером, по умолчанию. Кластер использует A запись в частной зоне для разрешения IP-адреса частной конечной точки для связи с сервером API.
  • Частная зона DNS связана только с виртуальной сетью, к которой подключены узлы кластера (3). Это означает, что частная конечная точка может разрешаться только узлами в этой связанной виртуальной сети. В сценариях, когда настраиваемое DNS не настроено в виртуальной сети (по умолчанию), это работает без проблемы, так как узлы указывают на 168.63.129.16 для DNS, которые могут разрешать записи в частной зоне DNS из-за ссылки.
  • В сценариях, где виртуальная сеть, содержащая кластер, имеет пользовательские параметры DNS (4), развертывание кластера завершается сбоем, если только частная зона DNS не связана с виртуальной сетью, содержащей пользовательские сопоставители DNS (5). Эту ссылку можно создать вручную после создания частной зоны во время подготовки кластера или автоматически после обнаружения создания зоны с помощью механизмов развертывания на основе событий (например, Сетки событий Azure или Функций Azure). Чтобы избежать сбоя кластера во время первоначального развертывания, кластер можно развернуть с помощью идентификатора ресурса частной зоны DNS. Это работает только с типом Microsoft.ContainerService/managedCluster ресурсов и версией 2022-07-01API. Использование более старой версии с шаблоном ARM или определением ресурсов Bicep не поддерживается.

Примечание.

Условное перенаправление не поддерживает поддомены.

Примечание.

Если вы используете собственную таблицу маршрутов с kubenet и принести собственные DNS с частными кластерами, создание кластера завершится ошибкой. После создания кластера необходимо связать RouteTable группу ресурсов узла с подсетью после успешного создания кластера.

Использование подключения к частной конечной точке

Частная конечная точка может быть настроена таким образом, чтобы виртуальная сеть не должна быть пиринговой для взаимодействия с частным кластером. Чтобы использовать частную конечную точку, создайте частную конечную точку в виртуальной сети, а затем создайте связь между виртуальной сетью и новой частной зоной DNS.

Внимание

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

Создание ресурса частной конечной точки

Создайте ресурс частной конечной точки в виртуальной сети:

  1. В браузере перейдите на портал Azure.
  2. В меню портала Azure выберите Создать ресурс.
  3. Найдите частную конечную точку и выберите Создать > Частная конечная точка.
  4. Нажмите кнопку создания.
  5. На вкладке "Основные сведения" настройте следующие параметры:
    • Сведения о проекте:
      • Выберите подписку Azure.
      • Выберите группу ресурсов Azure, в которой находится ваша виртуальная сеть.
    • Сведения об экземпляре:
      • Введите имя частной конечной точки, например myPrivateEndpoint.
      • Выберите регион частной конечной точки.

Внимание

Убедитесь, что выбранная область совпадает с виртуальной сетью, из которой вы хотите подключиться. В противном случае вы не увидите виртуальную сеть на вкладке Конфигурация.

  1. Нажмите кнопку "Далее" и настройте следующие параметры:
    • метод Подключение ion: выберите Подключение в ресурс Azure в моем каталоге.
    • Подписка. Выберите подписку, в которой находится частный кластер.
    • Тип ресурса: выберите Microsoft.ContainerService/managedClusters.
    • Ресурс. Выберите частный кластер.
    • Целевой вложенный ресурс: выбор управления.
  2. Нажмите кнопку Далее: виртуальная сеть и настройте следующие параметры:
    • Сеть:
      • Виртуальная сеть. Выберите виртуальную сеть.
      • Подсеть. Выберите подсеть.
  3. Нажмите кнопку Далее: DNS>Далее: теги и (необязательно) настройте значения ключей по мере необходимости.
  4. Нажмите кнопку "Далее": проверка и создание.>

После создания ресурса запишите частный IP-адрес частной конечной точки для дальнейшего использования.

Создание частной зоны DNS

После создания частной конечной точки создайте частную зону DNS с тем же именем, что и частная зона DNS, созданная частным кластером:

  1. Перейдите в группу ресурсов узла на портале Azure.
  2. Выберите частную зону DNS и запись:
    • Имя частной зоны DNS, которая соответствует шаблону *.privatelink.<region>.azmk8s.io.
    • Имя записи (за исключением частного A DNS-имени).
    • Время жизни (TTL).
  3. Выберите Создать ресурс на портале Azure.
  4. Найдите зону Частная зона DNS и выберите "Создать > Частная зона DNS зону".
  5. На вкладке "Основные сведения" настройте следующие параметры:
    • Сведения о проекте:
      • Выберите Подписка.
      • Выберите группу ресурсов, в которой вы создали частную конечную точку.
    • Сведения об экземпляре:
      • Введите имя зоны DNS, полученной из предыдущих шагов.
      • Регион по умолчанию используется для расположения группы ресурсов.
  6. Выберите Просмотреть и создать>Создать.

A Создание записи

После создания частной зоны DNS создайте запись, которая связывает частную A конечную точку с частным кластером:

  1. Перейдите в частную зону DNS, созданную на предыдущих шагах.
  2. На странице "Обзор" выберите набор записей.
  3. На вкладке "Добавить набор записей" настройте следующие параметры:
    • Имя. Введите имя, полученное A из записи в зоне DNS частного кластера.
    • Тип: выберите A - Адресная запись.
    • TTL: введите число из A записи в зоне DNS частного кластера.
    • Единица TTL: измените раскрывающееся значение, чтобы он соответствовал одному из записей из A зоны DNS частного кластера.
    • IP-адрес: введите IP-адрес созданной частной конечной точки.

Внимание

При создании A записи используйте только имя и не полное доменное имя (FQDN).

A После создания записи свяжите частную зону DNS с виртуальной сетью, которая получит доступ к частному кластеру:

  1. Перейдите в частную зону DNS, созданную на предыдущих шагах.
  2. В левой области выберите ссылки виртуальной сети.
  3. Выберите " Добавить " и настройте следующие параметры:
    • Имя ссылки: введите имя для ссылки виртуальной сети.
    • Подписка. Выберите подписку, в которой находится частный кластер.
    • Виртуальная сеть: выберите виртуальную сеть частного кластера.
  4. Выберите ОК для создания ссылки.

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

Предупреждение

Если частный кластер остановлен и перезапущен, исходная служба приватного канала частного кластера удаляется и повторно создается, что нарушает подключение между частной конечной точкой и частным кластером. Чтобы устранить эту проблему, удалите и повторно создайте все созданные пользователем частные конечные точки, связанные с частным кластером. Если у повторно созданной частной конечной точки есть новые IP-адреса, вам также потребуется обновить записи DNS.

Следующие шаги

Рекомендации и описания лучших практик представлены в статье Рекомендации по сетевому подключению и безопасности в AKS.