Создание частного кластера Служба Azure Kubernetes (AKS)
Эта статья поможет развернуть кластер AKS на основе приватного канала. Если вы хотите создать кластер AKS без обязательного приватного канала или туннеля, см. статью "Создание кластера Служба Azure Kubernetes с помощью интеграции виртуальной сети СЕРВЕРА API (предварительная версия)".
Обзор
В частном кластере уровень управления или сервер API имеют внутренние IP-адреса, определенные в документе RFC1918. Распределение адресов в частных IP-сетях. Используя частный кластер, вы можете гарантировать, что сетевой трафик между сервером API и пулами узлов остается только в частной сети.
Уровень управления или сервер API находится в группе ресурсов, управляемой AKS, а кластер или пул узлов находится в группе ресурсов. Сервер и пул узлов могут взаимодействовать друг с другом через службу Приватный канал Azure в виртуальной сети сервера API и частную конечную точку, доступную в подсети кластера AKS.
При подготовке частного кластера AKS AKS по умолчанию создает частное полное доменное имя с частной зоной DNS и дополнительным общедоступным полным доменным именем с соответствующей A
записью в Общедоступной DNS Azure. Узлы агента продолжают использовать A
запись в частной зоне DNS, чтобы разрешить частный IP-адрес частной конечной точки для связи с сервером API.
Доступность по регионам
Частные кластеры доступны в общедоступных регионах, 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 или выше.
- Чтобы использовать пользовательский 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.
- Существующие кластеры AKS, включенные с интеграцией виртуальных сетей API Server, могут включать режим частного кластера. Дополнительные сведения см. в разделе "Включение или отключение режима частного кластера" в существующем кластере с интеграцией виртуальной сети API Server.
Примечание.
Пул узлов Linux Azure теперь общедоступен (общедоступная версия). Дополнительные сведения о преимуществах и действиях по развертыванию см. в статье "Общие сведения о узле контейнеров Linux Azure для AKS".
Ограничения
- Диапазоны разрешенных IP-адресов нельзя применять к конечной точке частного сервера API, они применяются только к общедоступному серверу API.
- Ограничения службы Приватного канала Azure применимы к частным кластерам.
- Нет поддержки размещенных в Майкрософт агентов Azure DevOps с частными кластерами. Рассмотрите возможность использования локальных агентов.
- Если необходимо включить Реестр контейнеров Azure для работы с частным кластером AKS, настройте приватный канал для реестра контейнеров в виртуальной сети кластера или настройте пиринг между виртуальной сетью реестра контейнеров и виртуальной сетью частного кластера.
- Удаление или изменение частной конечной точки в подсети клиента приведет к прекращению работы кластера.
- служба Приватный канал Azure поддерживается только в Azure Load Balancer уровня "Стандартный". Azure Load Balancer цен. категории "Базовый" не поддерживается.
Создание частного кластера AKS
Создайте группу ресурсов с помощью
az group create
команды. Вы также можете использовать существующую группу ресурсов для кластера AKS.az group create \ --name <private-cluster-resource-group> \ --location <location>
Создайте частный кластер с базовой сетью по умолчанию с помощью
az aks create
команды с флагом--enable-private-cluster
.az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --generate-ssh-keys
Подключение к частному кластеру
Кластером Kubernetes можно управлять при помощи kubectl клиента командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl
уже установлен. Чтобы установить kubectl
локально, используйте az aks install-cli
команду.
Настройте
kubectl
подключение к кластеруaz aks get-credentials
Kubernetes с помощью команды. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
Проверьте подключение к кластеру
kubectl get
с помощью команды. Эта команда возвращает список узлов кластера.kubectl get nodes
Использование личных доменов
Если вы хотите настроить пользовательские домены, которые могут быть разрешены только внутри системы, см. раздел "Использование пользовательских доменов".
Отключение общедоступного полного доменного имени
Отключение общедоступного полного доменного имени в новом кластере
Отключите общедоступное полное доменное имя при создании частного кластера AKS с помощью
az aks create
команды с флагом--disable-public-fqdn
.az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone <private-dns-zone-mode> \ --disable-public-fqdn \ --generate-ssh-keys
Отключение общедоступного полного доменного имени в существующем кластере
Отключите общедоступное полное доменное имя в существующем кластере AKS с помощью
az aks update
команды с флагом--disable-public-fqdn
.az aks update \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --disable-public-fqdn
Настройка частной зоны DNS
Частные зоны DNS можно настроить с помощью следующих параметров:
system
— это значение по умолчанию.--private-dns-zone
Если аргумент опущен, AKS создает частную зону DNS в группе ресурсов узла.none
: по умолчанию используется общедоступный 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
поставщика Azure в обеих подписках. - Можно использовать
fqdn-subdomain
только дляCUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
предоставления возможностейprivatelink.<region>.azmk8s.io
поддомена. - Если кластер AKS настроен с субъектом-службой Active Directory, AKS не поддерживает использование управляемого удостоверения, назначаемого системой, с настраиваемой частной зоной DNS. Кластер должен использовать проверку подлинности управляемого удостоверения, назначаемого пользователем.
- Если вы задаете
<subzone>
значение, для имени имеется ограничение в 32 символов<subzone>
.
- Если частная зона DNS находится в подписке, отличной от кластера AKS, необходимо зарегистрировать
Примечание.
Можно настроить CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID
с помощью шаблона ARM или Azure CLI. privateDNSZone
принимает частную зону resourceID
DNZ, как показано в следующем примере:
properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}
Создание частного кластера AKS с частной зоной DNS
Создайте частный кластер AKS с частной зоной DNS с помощью
az aks create
команды со следующими флагами:az aks create \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone [system|none] \ --generate-ssh-keys
Создание частного кластера 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 \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone <custom private dns zone or custom private dns subzone resourceID> \ --generate-ssh-keys
Создание частного кластера 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 \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --load-balancer-sku standard \ --enable-private-cluster \ --assign-identity <resourceID> \ --private-dns-zone <custom private dns zone resourceID> \ --fqdn-subdomain <subdomain> \ --generate-ssh-keys
Обновление частного кластера из частной зоны DNS до общедоступной
Вы можете обновить только от byo
или system
до none
. Никакое другое сочетание значений обновления не поддерживается. Перед обновлением убедитесь, что подключитесь к частному кластеру.
Предупреждение
При обновлении частного кластера из byo
узла system
none
агента изменится на использование общедоступного полного доменного имени. В кластере AKS, использующего Azure Масштабируемые наборы виртуальных машин, обновление образа узла выполняется для обновления узлов с помощью общедоступного полного доменного имени.
Обновите частный кластер из
byo
команды илиsystem
none
с помощьюaz aks update
следующих флагов:az aks update \ --name <private-cluster-name> \ --resource-group <private-cluster-resource-group> \ --private-dns-zone none
Варианты подключения к частному кластеру
Конечная точка сервера API не имеет общедоступного IP-адреса. Чтобы управлять сервером API, необходимо использовать виртуальную машину, доступ к виртуальная сеть кластера AKS (виртуальная сеть). Существует несколько вариантов установления сетевого подключения к частному кластеру:
- Создайте виртуальную машину в той же виртуальной сети, что и кластер AKS, используя
az vm create
команду с флагом--vnet-name
. - Используйте виртуальную машину в отдельной сети и настройте пиринг виртуальных сетей.
- Использовать подключение Express Route или VPN.
- Использовать функцию
command invoke
AKS. - Использовать подключение к частной конечной точке.
- Используйте экземпляр Cloud Shell, развернутый в подсети, подключенной к серверу API для кластера.
Создание виртуальной машины в той же виртуальной сети, что и кластер AKS, является самым простым вариантом. Использование Express Route и VPN увеличивает затраты и сложность сети. Для пиринга виртуальных сетей необходимо спланировать диапазоны адресов сети CIDR, чтобы убедиться в отсутствии перекрывающихся диапазонов.
Пиринг между виртуальными сетями
Чтобы использовать пиринг между виртуальной сетью, необходимо настроить связь между виртуальной сетью и частной зоной DNS.
- В портал Azure перейдите в группу ресурсов узла и выберите ресурс частной зоны DNS.
- В меню службы в разделе "Управление DNS" выберите пункт виртуальная сеть "Добавить ссылки>".
- На странице "Добавить виртуальная сеть ссылку" настройте следующие параметры:
- Имя ссылки: введите имя для ссылки виртуальной сети.
- виртуальная сеть. Выберите виртуальную сеть, содержащую виртуальную машину.
- Выберите "Создать", чтобы создать ссылку виртуальной сети.
- Перейдите к группе ресурсов, содержащей виртуальную сеть кластера, и выберите ресурс виртуальной сети.
- В меню службы в разделе "Параметры" выберите "Добавить пиринги>".
- На странице "Добавление пиринга" настройте следующие параметры:
- Имя ссылки пиринга: введите имя ссылки пиринга.
- Виртуальная сеть: выберите виртуальную сеть виртуальной машины.
- Нажмите кнопку "Добавить ", чтобы создать ссылку пиринга.
Дополнительные сведения см. в статье Пиринг между виртуальными сетями.
Звездообразная архитектура с настраиваемым 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 выберите "Создать ресурс".
- Найдите частную конечную точку и выберите "Создать>частную конечную точку".
- Нажмите кнопку создания.
- На вкладке "Основные сведения" настройте следующие параметры:
- Сведения о проекте
- Подписка. Выберите подписку, в которой находится частный кластер.
- Группа ресурсов: выберите группу ресурсов, содержащую виртуальную сеть.
- Сведения об экземпляре
- Имя: введите имя частной конечной точки, например myPrivateEndpoint.
- Регион. Выберите тот же регион, что и виртуальная сеть.
- Сведения о проекте
- Нажмите кнопку "Далее" и настройте следующие параметры:
- Метод подключения. Выберите "Подключиться к ресурсу Azure" в моем каталоге.
- Подписка. Выберите подписку, в которой находится частный кластер.
- Тип ресурса: выберите Microsoft.ContainerService/managedClusters.
- Ресурс. Выберите частный кластер.
- Целевой вложенный ресурс: выбор управления.
- Нажмите кнопку Далее: виртуальная сеть и настройте следующие параметры:
- Сеть
- Виртуальная сеть. Выберите виртуальную сеть.
- Подсеть. Выберите подсеть.
- Сеть
- Нажмите кнопку Далее: DNS>Далее: теги и (необязательно) настройте значения ключей по мере необходимости.
- Нажмите кнопку "Далее": проверка и создание.>
После создания ресурса запишите частный IP-адрес частной конечной точки для дальнейшего использования.
Создание частной зоны DNS
Создав частную конечную точку, создайте частную зону DNS с тем же именем, что и частная зона DNS, созданная частным кластером. Не забудьте создать эту зону DNS в виртуальной сети, содержащей потребляемые ресурсы.
- В портал Azure перейдите к группе ресурсов узла и выберите ресурс частной зоны DNS.
- В меню службы в разделе "Управление DNS" выберите наборы записей и обратите внимание на следующее:
- Имя частной зоны DNS, которая соответствует шаблону
*.privatelink.<region>.azmk8s.io
. - Имя записи (за исключением частного
A
DNS-имени). - Время жизни (TTL).
- Имя частной зоны DNS, которая соответствует шаблону
- На домашней странице портал Azure выберите "Создать ресурс".
- Найдите зону Частная зона DNS и выберите "Создать> Частная зона DNS зону".
- На вкладке "Основные сведения" настройте следующие параметры:
- Сведения о проекте:
- Выберите Подписка.
- Выберите группу ресурсов, в которой вы создали частную конечную точку.
- Сведения об экземпляре
- Имя. Введите имя зоны DNS, полученной из предыдущих шагов.
- Регион по умолчанию используется для расположения группы ресурсов.
- Сведения о проекте:
- Выберите Просмотреть и создать>Создать.
A
Создание записи
После создания частной зоны DNS создайте запись, которая связывает частную A
конечную точку с частным кластером:
- Перейдите в частную зону DNS, созданную на предыдущих шагах.
- В меню службы в разделе "Управление DNS" выберите "Наборы записей>".
- На странице "Добавление набора записей" настройте следующие параметры:
- Имя. Введите имя, полученное
A
из записи в зоне DNS частного кластера. - Тип: выберите A - Адресная запись.
- TTL: введите число из
A
записи в зоне DNS частного кластера. - Единица TTL: измените раскрывающееся значение, чтобы он соответствовал одному из записей из
A
зоны DNS частного кластера. - IP-адрес: введите IP-адрес созданной частной конечной точки.
- Имя. Введите имя, полученное
- Нажмите кнопку "Добавить ", чтобы создать
A
запись.
Внимание
При создании A
записи используйте только имя и не полное доменное имя (FQDN).
Связывание частной зоны DNS с виртуальной сетью
A
После создания записи свяжите частную зону DNS с виртуальной сетью, которая получит доступ к частному кластеру:
- Перейдите в частную зону DNS, созданную на предыдущих шагах.
- В меню службы в разделе "Управление DNS" выберите пункт виртуальная сеть "Добавить ссылки>".
- На странице "Добавить виртуальная сеть ссылку" настройте следующие параметры:
- Имя ссылки: введите имя для ссылки виртуальной сети.
- Подписка. Выберите подписку, в которой находится частный кластер.
- виртуальная сеть. Выберите виртуальную сеть частного кластера.
- Нажмите кнопку "Создать", чтобы создать ссылку.
Для завершения операции может потребоваться несколько минут. После создания ссылки виртуальной сети вы можете получить доступ к нему на вкладке "Ссылки виртуальная сеть", которую вы использовали на шаге 2.
Предупреждение
- Если частный кластер остановлен и перезапущен, исходная служба приватного канала частного кластера удаляется и повторно создается, что нарушает подключение между частной конечной точкой и частным кластером. Чтобы устранить эту проблему, удалите и повторно создайте все созданные пользователем частные конечные точки, связанные с частным кластером. Если у повторно созданной частной конечной точки есть новые IP-адреса, вам также потребуется обновить записи DNS.
- Если вы обновляете записи DNS в частной зоне DNS, убедитесь, что узел, из которых вы пытаетесь подключиться, использует обновленные записи DNS. Это можно проверить с помощью
nslookup
команды. Если вы заметили, что обновления не отражаются в выходных данных, может потребоваться очистить кэш DNS на компьютере и повторить попытку.
Следующие шаги
Рекомендации и описания лучших практик представлены в статье Рекомендации по сетевому подключению и безопасности в AKS.
Azure Kubernetes Service