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


Создать частный кластер Azure Kubernetes Service (AKS)

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

Обзор частных кластеров в AKS

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

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

При создании частного кластера AKS AKS по умолчанию создает как частные, так и общедоступные полные доменные имена (FQDN) с соответствующими зонами DNS. Подробные параметры конфигурации DNS см. в разделе "Настройка частной зоны DNS", частной подзоны DNS или пользовательского поддомена.

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

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

Внимание

Все функции Microsoft Defender для облака официально будут сняты в Azure в китайском регионе 18 августа 2026 года. Из-за предстоящего выхода на пенсию клиенты Azure в Китае больше не смогут подключить новые подписки к службе. Новая подписка — это любая подписка, которая еще не была подключена к облачной службе Microsoft Defender до 18 августа 2025 года, дата объявления о выходе на пенсию. Дополнительные сведения об устаревании см. в объявлении “Microsoft Defender for Cloud Deprecation в Microsoft Azure, управляемой 21Vianet”.

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

Предварительные требования для частных кластеров AKS

  • Azure CLI версии 2.28.0 или более поздней. Запустите az --version, чтобы определить версию и запустите az upgrade для обновления версии. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
  • При использовании 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.

Внимание

Начиная с 30 ноября 2025 г. служба Azure Kubernetes (AKS) больше не поддерживает или предоставляет обновления безопасности для Azure Linux 2.0. Образ узла Linux 2.0 Azure заморожен в выпуске 202512.06.0. Начиная с 31 марта 2026 г. образы узлов будут удалены, и вы не сможете масштабировать пулы узлов. Выполните миграцию в поддерживаемую версию Linux Azure, обновив пулы узлов до поддерживаемой версии Kubernetes или переключив ее на osSku AzureLinux3. Дополнительные сведения см. в вопросе о прекращении поддержки на GitHub и объявлении об устаревании обновлений Azure. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о выпуске AKS.

Ограничения и рекомендации для частных кластеров AKS

Концентратор и периферийный сервер с пользовательским DNS для частных кластеров AKS

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

Частный концентратор кластера и периферийный кластер

При развертывании частных кластеров AKS в центральных и периферийных архитектурах с помощью пользовательского DNS следует учитывать следующие рекомендации.

  • При создании частного кластера частная конечная точка (1) и частная зона DNS (2) создаются в группе ресурсов, управляемой кластером, по умолчанию. Кластер использует A запись в частной зоне для разрешения IP-адреса частной конечной точки и обеспечения связи с сервером API.

  • Частная зона DNS связана только с виртуальной сетью, к которой подключены узлы кластера (3), что означает, что частная конечная точка может быть разрешена только узлами в этой связанной виртуальной сети. В сценариях, когда настраиваемый DNS не сконфигурирован в виртуальной сети (по умолчанию), система работает без затруднений, поскольку узлы обращаются к 168.63.129.16, который разрешает записи в частной зоне DNS благодаря соединению.

  • При сохранении поведения частной зоны DNS по умолчанию AKS пытается связать зону непосредственно с периферийной виртуальной сетью, в которую размещается кластер, даже если зона уже связана с центральной виртуальной сетью.

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

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

    • Настраиваемая частная зона DNS: укажите предварительно созданную частную зону и задайте privateDNSZone / --private-dns-zone его идентификатор ресурса. Свяжите эту зону с соответствующей виртуальной сетью (например, виртуальной сетью концентратора) и установите publicDNS на false / используйте --disable-public-fqdn.
    • Только общедоступный DNS: отключите создание частной зоны, установив privateDNSZone / --private-dns-zone на none и оставьте publicDNSв значении по умолчанию (true) / не используйте --disable-public-fqdn.
  • Если вы используете собственную таблицу маршрутов (BYO) с kubenet и собственный BYO DNS с частными кластерами, создание кластера терпит неудачу. Чтобы создание кластера было успешным, нужно связать RouteTable группу ресурсов узла с подсетью после того, как первоначальная попытка создания кластера не удалась.

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

  • Параметр privateDNSZone / --private-dns-zonenonepublicDNS: false / --disable-public-fqdnв то же время не поддерживается.
  • Условное перенаправление не поддерживает поддомены.

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

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

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

    Ключевые параметры в этой команде:

    • --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
    
  3. Настройте kubectl для подключения к частному кластеру AKS.

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

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

    az group create \
        --name <private-cluster-resource-group> \
        --location <location>
    
  2. Создайте частный кластер с расширенными сетями az aks create с помощью команды.

    Ключевые параметры в этой команде:

    • --enable-private-cluster: включает режим частного кластера.
    • --network-plugin azure: указывает сетевой плагин Azure CNI.
    • --vnet-subnet-id: идентификатор ресурса существующей подсети в виртуальной сети.
    • --dns-service-ip: доступный IP-адрес в диапазоне адресов службы Kubernetes, используемый для службы DNS кластера.
    • --service-cidr: диапазон IP-адресов нотации CIDR, из которого следует назначать IP-адреса кластера служб.
    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
        --generate-ssh-keys
    
  3. Настройте kubectl для подключения к частному кластеру AKS.

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

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

Деактивация публичного полного доменного имени на частном кластере AKS

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

  • Отключите общедоступное полное доменное имя при создании частного кластера 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 <resource-id> \
        --private-dns-zone <private-dns-zone-mode> \
        --disable-public-fqdn \
        --generate-ssh-keys
    

Отключить общедоступное полное доменное имя (FQDN) в существующем кластере

  • Отключите публичное полное доменное имя в существующем кластере 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 или настраиваемого поддомена для частного кластера AKS

Вы можете настроить частные параметры DNS для частного кластера AKS с помощью Azure CLI (с --private-dns-zone параметром) или шаблона Azure Resource Manager (ARM) (со свойством privateDNSZone ). В следующей таблице описаны параметры, доступные для --private-dns-zone параметра или privateDNSZone свойства:

Setting Description
system Значение по умолчанию при настройке частной зоны DNS. Если не указано --private-dns-zone / privateDNSZone, AKS создает частную зону DNS в группе ресурсов узла.
none Если задано значение --private-dns-zone / privateDNSZonenone, 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. Вы не можете изменить или удалить этот ресурс после создания кластера, так как это может привести к проблемам с производительностью и сбоям обновления кластера. Можно использовать --fqdn-subdomain <subdomain> вместе с <custom-private-dns-zone-resource-id> только для предоставления возможностей поддомена privatelink.<region>.azmk8s.io. Если вы указываете подзону, для имени задано 32 символьное <subzone> ограничение.

При настройке частного DNS для частного кластера AKS следует учитывать следующие рекомендации.

  • Если частная зона DNS находится в подписке, отличной от кластера AKS, необходимо зарегистрировать Microsoft.ContainerServices поставщика Azure в обеих подписках.
  • Если ваш кластер AKS настроен с субъектом службы Active Directory, AKS не поддерживает использование управляемого удостоверения, системно назначаемого, с настраиваемой частной зоной DNS. Кластер должен использовать аутентификацию с помощью управляемого удостоверения, назначаемого пользователем.

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

  1. Создайте частный кластер AKS с частной зоной DNS с помощью az aks create команды.

    Ключевые параметры в этой команде:

    • --enable-private-cluster: включает режим частного кластера.
    • --private-dns-zone [system|none]: настраивает частную зону DNS для кластера. Значение по умолчанию — system.
    • --assign-identity <resource-id>: идентификатор ресурса управляемого удостоверения, назначаемого пользователем, с ролью участника частной зоны DNS и участника сети .
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone [system|none] \
        --generate-ssh-keys
    
  2. Настройте kubectl для подключения к частному кластеру AKS.

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

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

    Ключевые параметры в этой команде:

    • --enable-private-cluster: включает режим частного кластера.
    • --private-dns-zone <custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>: идентификатор ресурса предварительно созданной частной зоны DNS или подзоны в следующем формате для глобального облака Azure: privatelink.<region>.azmk8s.io или <subzone>.privatelink.<region>.azmk8s.io.
    • --assign-identity <resource-id>: идентификатор ресурса управляемого удостоверения, назначаемого пользователем, с ролью участника частной зоны DNS и участника сети .
    # 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 <resource-id> \
        --private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>] \
        --generate-ssh-keys
    
  2. Настройте kubectl для подключения к частному кластеру AKS.

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

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

    Ключевые параметры в этой команде:

    • --enable-private-cluster: включает режим частного кластера.
    • --private-dns-zone <custom-private-dns-zone-resource-id>: идентификатор ресурса предварительно созданной частной зоны DNS в следующем формате для глобального облака Azure: privatelink.<region>.azmk8s.io
    • --fqdn-subdomain <subdomain>: поддомен, используемый для полного доменного имени кластера в настраиваемой частной зоне DNS.
    • --assign-identity <resource-id>: идентификатор ресурса управляемого удостоверения, назначаемого пользователем, с ролью участника частной зоны DNS и участника сети .
    # 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 <resource-id> \
        --private-dns-zone <custom-private-dns-zone-resource-id> \
        --fqdn-subdomain <subdomain> \
        --generate-ssh-keys
    
  2. Настройте kubectl для подключения к частному кластеру AKS.

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

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

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

При обновлении частного кластера с byo или system на none, узлы агента изменяются на использование общедоступного полного доменного имени. В кластере AKS, использующего масштабируемые наборы виртуальных машин Azure, обновление образа узла выполняется для обновления узлов с помощью общедоступного полного доменного имени.

  • Обновите частный кластер от byo или system до none, используя команду az aks update с параметром --private-dns-zone, установленным на none.

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

Настройка kubectl для подключения к частному кластеру AKS

Чтобы управлять кластером Kubernetes, используйте клиент командной строки Kubernetes, kubectl. Если вы используете Azure Cloud Shell, kubectl уже установлен. Чтобы установить kubectl локально, используйте az aks install-cli команду.

  1. Настройте kubectl для подключения к вашему кластеру Kubernetes с помощью команды az aks get-credentials. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.

    az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>
    
  2. Проверьте подключение к кластеру kubectl get с помощью команды. Эта команда возвращает список узлов кластера.

    kubectl get nodes
    

    Команда возвращает выходные данные, аналогичные следующему примеру выходных данных:

    NAME                                STATUS   ROLES   AGE    VERSION
    aks-nodepool1-12345678-vmss000000   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000001   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000002   Ready    agent   3h6m   v1.15.11