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


Создание частного кластера Служба 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".

Ограничения

Создание частного кластера 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 подключение к кластеру az aks get-credentials Kubernetes с помощью команды. Эта команда скачивает учетные данные и настраивает интерфейс командной строки 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
    

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

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

Примечание.

Можно настроить 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, является самым простым вариантом. Использование 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 (4), развертывание кластера завершается сбоем, если только частная зона DNS не связана с виртуальной сетью, содержащей пользовательские сопоставители DNS (5). Эту ссылку можно создать вручную после создания частной зоны во время подготовки кластера или автоматически после обнаружения создания зоны с помощью механизмов развертывания на основе событий (например, Сетки событий Azure или Функций Azure). Чтобы избежать сбоя кластера во время первоначального развертывания, кластер можно развернуть с помощью идентификатора ресурса частной зоны DNS. Это работает только с типом Microsoft.ContainerService/managedCluster ресурсов и версией 2022-07-01API. Использование более старой версии с шаблоном ARM или определением ресурсов Bicep не поддерживается.

Примечание.

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

Примечание.

Если вы используете собственную таблицу маршрутов с 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: измените раскрывающееся значение, чтобы он соответствовал одному из записей из 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.