Создание частного кластера Служба 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
команды или system
none
с помощью 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, используя
az vm create
команду с флагом--vnet-name
. - Используйте виртуальную машину в отдельной сети и настройте пиринг виртуальных сетей.
- Использовать подключение Express Route или VPN.
- Использовать функцию
command invoke
AKS. - Использовать подключение к частной конечной точке.
Примечание.
Создание виртуальной машины в той же виртуальной сети, что и кластер AKS, является самым простым вариантом. Использование Express Route и VPN увеличивает затраты и сложность сети. Для пиринга виртуальных сетей необходимо спланировать диапазоны адресов сети CIDR, чтобы убедиться в отсутствии перекрывающихся диапазонов.
Пиринг между виртуальными сетями
Пиринг между виртуальными сетями — один из способов доступа к частному кластеру. Чтобы использовать пиринг между виртуальной сетью, необходимо настроить связь между виртуальной сетью и частной зоной DNS.
- В браузере перейдите на портал Azure.
- В портал Azure перейдите в группу ресурсов узла.
- Выберите частную зону DNS.
- В левой области выберите виртуальную сеть.
- Создайте новую ссылку, чтобы добавить виртуальную сеть виртуальной машины в частную зону DNS. Ссылка на зону DNS станет доступной через несколько минут.
- На портале Azure перейдите к группе ресурсов, содержащей виртуальную сеть вашего кластера.
- В области справа выберите виртуальную сеть. Имя виртуальной сети указано в формате aks-vnet-*.
- В левой области выберите Пиринг.
- Нажмите Добавить, добавьте виртуальную сеть виртуальной машины, а затем создайте пиринг. Дополнительные сведения см. в статье Пиринг между виртуальными сетями.
Звездообразная архитектура с настраиваемым DNS
Для развертывания сетей в Azure часто используется звездообразная архитектура. Во многих из этих развертываний параметры DNS в периферийных виртуальных сетях настроены для ссылки на центральный сервер пересылки DNS, чтобы обеспечить разрешение локальных DNS-имен и имен на основе Azure. При развертывании кластера AKS в такой сетевой среде существуют некоторые особые аспекты:
- При подготовке частного кластера частная конечная точка (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-01
API. Использование более старой версии с шаблоном ARM или определением ресурсов Bicep не поддерживается.
Примечание.
Условное перенаправление не поддерживает поддомены.
Примечание.
Если вы используете собственную таблицу маршрутов с kubenet и принести собственные DNS с частными кластерами, создание кластера завершится ошибкой. После создания кластера необходимо связать RouteTable
группу ресурсов узла с подсетью после успешного создания кластера.
Использование подключения к частной конечной точке
Частная конечная точка может быть настроена таким образом, чтобы виртуальная сеть не должна быть пиринговой для взаимодействия с частным кластером. Чтобы использовать частную конечную точку, создайте частную конечную точку в виртуальной сети, а затем создайте связь между виртуальной сетью и новой частной зоной DNS.
Внимание
Если для виртуальной сети настроены пользовательские DNS-серверы, необходимо соответствующим образом настроить частный DNS для среды. Дополнительные сведения см. в документации по разрешению имен виртуальных сетей.
Создание ресурса частной конечной точки
Создайте ресурс частной конечной точки в виртуальной сети:
- В браузере перейдите на портал Azure.
- В меню портала Azure выберите Создать ресурс.
- Найдите частную конечную точку и выберите Создать > Частная конечная точка.
- Нажмите кнопку создания.
- На вкладке "Основные сведения" настройте следующие параметры:
- Сведения о проекте:
- Выберите подписку Azure.
- Выберите группу ресурсов Azure, в которой находится ваша виртуальная сеть.
- Сведения об экземпляре:
- Введите имя частной конечной точки, например myPrivateEndpoint.
- Выберите регион частной конечной точки.
- Сведения о проекте:
Внимание
Убедитесь, что выбранная область совпадает с виртуальной сетью, из которой вы хотите подключиться. В противном случае вы не увидите виртуальную сеть на вкладке Конфигурация.
- Нажмите кнопку "Далее" и настройте следующие параметры:
- метод Подключение ion: выберите Подключение в ресурс Azure в моем каталоге.
- Подписка. Выберите подписку, в которой находится частный кластер.
- Тип ресурса: выберите Microsoft.ContainerService/managedClusters.
- Ресурс. Выберите частный кластер.
- Целевой вложенный ресурс: выбор управления.
- Нажмите кнопку Далее: виртуальная сеть и настройте следующие параметры:
- Сеть:
- Виртуальная сеть. Выберите виртуальную сеть.
- Подсеть. Выберите подсеть.
- Сеть:
- Нажмите кнопку Далее: DNS>Далее: теги и (необязательно) настройте значения ключей по мере необходимости.
- Нажмите кнопку "Далее": проверка и создание.>
После создания ресурса запишите частный IP-адрес частной конечной точки для дальнейшего использования.
Создание частной зоны DNS
После создания частной конечной точки создайте частную зону DNS с тем же именем, что и частная зона DNS, созданная частным кластером:
- Перейдите в группу ресурсов узла на портале Azure.
- Выберите частную зону DNS и запись:
- Имя частной зоны DNS, которая соответствует шаблону
*.privatelink.<region>.azmk8s.io
. - Имя записи (за исключением частного
A
DNS-имени). - Время жизни (TTL).
- Имя частной зоны DNS, которая соответствует шаблону
- Выберите Создать ресурс на портале Azure.
- Найдите зону Частная зона DNS и выберите "Создать > Частная зона DNS зону".
- На вкладке "Основные сведения" настройте следующие параметры:
- Сведения о проекте:
- Выберите Подписка.
- Выберите группу ресурсов, в которой вы создали частную конечную точку.
- Сведения об экземпляре:
- Введите имя зоны DNS, полученной из предыдущих шагов.
- Регион по умолчанию используется для расположения группы ресурсов.
- Сведения о проекте:
- Выберите Просмотреть и создать>Создать.
A
Создание записи
После создания частной зоны DNS создайте запись, которая связывает частную A
конечную точку с частным кластером:
- Перейдите в частную зону DNS, созданную на предыдущих шагах.
- На странице "Обзор" выберите набор записей.
- На вкладке "Добавить набор записей" настройте следующие параметры:
- Имя. Введите имя, полученное
A
из записи в зоне DNS частного кластера. - Тип: выберите A - Адресная запись.
- TTL: введите число из
A
записи в зоне DNS частного кластера. - Единица TTL: измените раскрывающееся значение, чтобы он соответствовал одному из записей из
A
зоны DNS частного кластера. - IP-адрес: введите IP-адрес созданной частной конечной точки.
- Имя. Введите имя, полученное
Внимание
При создании A
записи используйте только имя и не полное доменное имя (FQDN).
Связывание частной зоны DNS с виртуальной сетью
A
После создания записи свяжите частную зону DNS с виртуальной сетью, которая получит доступ к частному кластеру:
- Перейдите в частную зону DNS, созданную на предыдущих шагах.
- В левой области выберите ссылки виртуальной сети.
- Выберите " Добавить " и настройте следующие параметры:
- Имя ссылки: введите имя для ссылки виртуальной сети.
- Подписка. Выберите подписку, в которой находится частный кластер.
- Виртуальная сеть: выберите виртуальную сеть частного кластера.
- Выберите ОК для создания ссылки.
Для завершения операции может потребоваться несколько минут. После создания канала виртуальной сети вы можете получить доступ к нему на вкладке "Ссылки виртуальной сети", которую вы использовали на шаге 2.
Предупреждение
Если частный кластер остановлен и перезапущен, исходная служба приватного канала частного кластера удаляется и повторно создается, что нарушает подключение между частной конечной точкой и частным кластером. Чтобы устранить эту проблему, удалите и повторно создайте все созданные пользователем частные конечные точки, связанные с частным кластером. Если у повторно созданной частной конечной точки есть новые IP-адреса, вам также потребуется обновить записи DNS.
Следующие шаги
Рекомендации и описания лучших практик представлены в статье Рекомендации по сетевому подключению и безопасности в AKS.