Создание кластера Служба Azure Kubernetes с интеграцией виртуальных сетей API Server (предварительная версия)

Кластер Служба Azure Kubernetes (AKS), настроенный с помощью интеграции виртуальных сетей API, проектирует конечную точку сервера API непосредственно в делегированную подсеть в виртуальной сети, в которой развертывается AKS. Интеграция виртуальной сети СЕРВЕРА API обеспечивает сетевое взаимодействие между сервером API и узлами кластера, не требуя приватного канала или туннеля. Сервер API доступен за виртуальным IP-адресом внутренней подсистемы балансировки нагрузки в делегированной подсети, которую узлы настроены для использования. Используя интеграцию виртуальной сети сервера API, вы можете обеспечить передачу сетевого трафика между сервером API и пулами узлов только в частной сети.

Подключение к серверу API

Уровень управления или сервер API находится в управляемой AKS подписке Azure. Кластер или пул узлов находится в подписке Azure. Сервер и виртуальные машины, составляющие узлы кластера, могут обмениваться друг с другом данными через виртуальные IP-адреса сервера API и IP-адреса модулей pod, которые проецируются в делегированную подсеть.

Интеграция виртуальной сети СЕРВЕРА API поддерживается для общедоступных или частных кластеров. После подготовки кластера можно добавить или удалить общедоступный доступ. В отличие от интегрированных кластеров без виртуальной сети, узлы агента всегда взаимодействуют напрямую с частным IP-адресом внутреннего IP-адреса сервера API-сервера внутренней подсистемы балансировки нагрузки (ILB) без использования DNS. Весь узел к серверу API хранится в частной сети, и для сервера API для подключения к узлам не требуется туннель. Клиенты вне кластера, которым требуется обмен данными с сервером API, могут сделать это обычным образом, если включен доступ к общедоступной сети. Если доступ к общедоступной сети отключен, следует следовать той же методике настройки частного DNS, что и стандартные частные кластеры.

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

Интеграция виртуальной сети СЕРВЕРА API доступна во всех глобальных регионах Azure.

Необходимые компоненты

  • Azure CLI с расширением aks-preview версии 0.5.97 или более поздней.
  • Если используется ARM или REST API, API AKS должен иметь версию 2022-04-02-preview или более позднюю.

Установка расширения Azure CLI для aks-preview

Внимание

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

  • Установите расширение aks-preview с помощью az extension add команды.

    az extension add --name aks-preview
    
  • Обновите до последней версии расширения, выпущенного az extension update с помощью команды.

    az extension update --name aks-preview
    

Регистрация флага компонента EnableAPIServerVnetIntegrationPreview

  1. EnableAPIServerVnetIntegrationPreview Зарегистрируйте флаг компонента с помощью az feature register команды.

    az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    

    Через несколько минут отобразится состояние Registered (Зарегистрировано).

  2. Проверьте состояние регистрации с помощью az feature show команды:

    az feature show --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    
  3. Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью az provider register команды.

    az provider register --namespace Microsoft.ContainerService
    

Создание кластера AKS с интеграцией виртуальной сети СЕРВЕРА API с помощью управляемой виртуальной сети

Кластеры AKS можно настроить с интеграцией виртуальной сети СЕРВЕРА API в управляемой виртуальной сети или в режиме собственной виртуальной сети. Их можно создать как общедоступные кластеры (с доступом к серверу API, доступным через общедоступный IP-адрес) или частные кластеры (где сервер API доступен только через подключение к частной виртуальной сети). Вы также можете переключаться между общедоступным и частным состоянием без повторного развертывания кластера.

Создание или изменение группы ресурсов

  • Создайте группу ресурсов с помощью az group create команды.

    az group create --location westus2 --name <resource-group>
    

Развертывание общедоступного кластера

  • Разверните общедоступный кластер AKS с интеграцией виртуальной сети API Server для управляемой виртуальной сети с помощью az aks create команды с флагом --enable-api-server-vnet-integration .

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

Развертывание частного кластера

  • Разверните частный кластер AKS с интеграцией виртуальной сети СЕРВЕРА API для управляемой виртуальной сети с помощью az aks create команды с --enable-api-server-vnet-integration флагами и --enable-private-cluster флагами.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

Создание частного кластера AKS с интеграцией виртуальной сети СЕРВЕРА API с помощью собственной виртуальной сети

При использовании собственной виртуальной сети необходимо создать и делегировать подсеть Microsoft.ContainerService/managedClustersсервера API, которая предоставляет службе AKS разрешения на внедрение модулей pod сервера API и внутренней подсистемы балансировки нагрузки в эту подсеть. Вы не можете использовать подсеть для других рабочих нагрузок, но ее можно использовать для нескольких кластеров AKS, расположенных в одной виртуальной сети. Минимальный поддерживаемый размер подсети сервера API — / 28.

Удостоверение кластера должно иметь разрешения на подсеть сервера API и подсеть узла. Отсутствие разрешений в подсети сервера API может привести к сбою подготовки.

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

Кластер AKS резервирует по крайней мере 9 IP-адресов в адресном пространстве подсети. Недостаток IP-адресов может предотвратить масштабирование сервера API и привести к сбою сервера API.

Создание или изменение группы ресурсов

  • Создайте группу ресурсов с помощью az group create команды.
az group create --location <location> --name <resource-group>

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

  1. Создайте виртуальную сеть с помощью az network vnet create команды.

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Создайте подсеть сервера API с помощью az network vnet subnet create команды.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Создайте подсеть кластера с помощью az network vnet subnet create команды.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Создание управляемого удостоверения и предоставление ему разрешений на виртуальную сеть

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

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Назначьте роль участника сети подсети сервера API с помощью az role assignment create команды.

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Назначьте роль участника сети подсети кластера с помощью az role assignment create команды.

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Развертывание общедоступного кластера

  • Разверните общедоступный кластер AKS с интеграцией виртуальной сети API Server с помощью az aks create команды с флагом --enable-api-server-vnet-integration .

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --vnet-subnet-id <cluster-subnet-resource-id> \
        --apiserver-subnet-id <apiserver-subnet-resource-id> \
        --assign-identity <managed-identity-resource-id> \
        --generate-ssh-keys
    

Развертывание частного кластера

  • Разверните частный кластер AKS с интеграцией виртуальной сети API Server с помощью az aks create команды с --enable-api-server-vnet-integration флагами и --enable-private-cluster флагами.

    az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys
    

Преобразование существующего кластера AKS в интеграцию виртуальной сети сервера API

Вы можете преобразовать существующие общедоступные или частные кластеры AKS в кластеры интеграции виртуальных сетей API, предоставив подсеть сервера API, которая соответствует требованиям, перечисленным ранее. К этим требованиям относятся: в той же виртуальной сети, что и узлы кластера, разрешения, предоставленные для удостоверения кластера AKS, а не используются другими ресурсами, такими как частная конечная точка, и размер по крайней мере /28. Преобразование кластера — это односторонняя миграция. Кластеры не могут отключить интеграцию виртуальной сети СЕРВЕРА API после его включения.

Это обновление выполняет обновление версии образа узла во всех пулах узлов и перезапускает все рабочие нагрузки во время последовательного обновления образа.

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

Преобразование кластера в интеграцию виртуальной сети СЕРВЕРА API приводит к изменению IP-адреса сервера API, хотя имя узла остается неизменным. Если IP-адрес сервера API настроен в брандмауэрах или правилах группы безопасности сети, возможно, эти правила нужно будет обновить.

  • Обновите кластер до интеграции виртуальной сети сервера API с помощью az aks update команды с флагом --enable-apiserver-vnet-integration .

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>
    

Включение или отключение режима частного кластера в существующем кластере с интеграцией виртуальной сети сервера API

У кластеров AKS, настроенных с интеграцией виртуальной сети сервера API, можно включить или отключить доступ к общедоступной сети или режим частного кластера без повторного развертывания. Имя узла сервера API не изменяется, но при необходимости общедоступные записи DNS изменяются или удаляются.

Примечание.

В настоящее --disable-private-clusterнаходится на этапе предварительной версии. Дополнительные сведения см. в разделе "Справочные материалы" и "Уровни поддержки".

Включение режима частного кластера

  • Включите режим частного кластера с помощью az aks update команды с флагом --enable-private-cluster .

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster
    

Отключение режима частного кластера

  • Отключите режим частного кластера с помощью az aks update команды с флагом --disable-private-cluster .

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-private-cluster
    

Подключение к кластеру с помощью kubectl

  • Настройте kubectl подключение к кластеру az aks get-credentials с помощью команды.

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    

Правила безопасности NSG

Весь трафик в виртуальной сети разрешен по умолчанию. Но если вы добавили правила NSG для ограничения трафика между различными подсетями, убедитесь, что правила безопасности NSG разрешают следующие типы обмена данными:

Назначение Исходный код Протокол Порт Использование
CIDR подсети СЕРВЕРА APIServer Подсеть кластера TCP 443 и 4443 Требуется для включения связи между узлами и сервером API.
CIDR подсети СЕРВЕРА APIServer Azure Load Balancer TCP 9988 Требуется для включения взаимодействия между Azure Load Balancer и сервером API. Вы также можете включить все коммуникации между Azure Load Balancer и ПОДсетью СЕРВЕРА API CIDR.

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

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