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


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

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

Обзор

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

Azure-уровень управления или сервер API находится в Azure-группе ресурсов, управляемой AKS, а кластер или пул узлов находится в вашей группе ресурсов. Сервер, кластер или пул узлов могут взаимодействовать друг с другом через службу Azure Private Link в виртуальной сети сервера 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".

Ограничения

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

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

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

  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
    

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

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

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

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

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

Отключить общедоступное полное доменное имя (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 можно настроить с помощью следующих параметров:

  • 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. Кроме того, вам потребуется назначаемое пользователем удостоверение или субъект-служба с ролями участника зоны Private 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>, для имени <subzone> имеется ограничение в 32 символа.

Примечание.

Можно настроить 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, необходимо использовать виртуальную машину с доступом к виртуальной сети Azure кластера AKS (VNet). Существует несколько вариантов установления сетевого подключения к частному кластеру:

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

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

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

  1. В портал Azure перейдите в группу ресурсов узла и выберите ресурс частной зоны DNS.
  2. В меню сервиса в разделе "Управление DNS" выберите Виртуальные сетевые связи>Добавить.
  3. На странице Добавить ссылку виртуальной сети настройте следующие параметры:
    • Имя ссылки: введите имя для ссылки виртуальной сети.
    • виртуальная сеть. Выберите виртуальную сеть, содержащую виртуальную машину.
  4. Выберите "Создать", чтобы создать ссылку виртуальной сети.
  5. Перейдите к группе ресурсов, содержащей виртуальную сеть кластера, и выберите ресурс виртуальной сети.
  6. В главном меню в разделе Параметры выберите Пиринги>Добавить.
  7. На странице "Добавление пирингового соединения" настройте следующие параметры:
    • Имя ссылки пиринга: введите название для ссылки пиринга.
    • Виртуальная сеть: выберите виртуальную сеть виртуальной машины.
  8. Нажмите Добавить, чтобы создать пиринговую ссылку.

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

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

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

Частный концентратор и звездообразная архитектура

При развертывании кластера AKS в такой сетевой среде существуют некоторые особые аспекты:

  • При подготовке частного кластера частная конечная точка (1) и частная зона DNS (2) создаются в группе ресурсов, управляемой кластером, по умолчанию. Кластер использует A запись в частной зоне для разрешения IP-адреса частной конечной точки и обеспечения связи с сервером API.
  • Частная зона DNS связана только с виртуальной сетью, к которой подключены узлы кластера (3). Это означает, что частная конечная точка может разрешаться только узлами в этой связанной виртуальной сети. В сценариях, когда настраиваемое DNS не настроено в виртуальной сети (по умолчанию), это работает без проблемы, так как узлы указывают на 168.63.129.16 для DNS, которые могут разрешать записи в частной зоне DNS из-за ссылки.
  • Если используется поведение частной зоны DNS по умолчанию, AKS пытается связать зону непосредственно с виртуальной сетью кластера, даже если она уже связана с центральной виртуальной сетью. Это может привести к сбоям развертывания в виртуальных сетях с пользовательскими параметрами DNS, если управляемое удостоверение кластера не имеет разрешений Сетевого участника на всей виртуальной сети. Чтобы избежать этого, можно указать предварительно созданную зону или задать параметр noneDNS.

Примечание.

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

Примечание.

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

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

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

Внимание

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

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

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

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

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

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

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

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