Создание кластера Служба 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
EnableAPIServerVnetIntegrationPreview
Зарегистрируйте флаг компонента с помощьюaz feature register
команды.az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
Через несколько минут отобразится состояние Registered (Зарегистрировано).
Проверьте состояние регистрации с помощью
az feature show
команды:az feature show --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов 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>
Создание виртуальной сети
Создайте виртуальную сеть с помощью
az network vnet create
команды.az network vnet create --name <vnet-name> \ --resource-group <resource-group> \ --location <location> \ --address-prefixes 172.19.0.0/16
Создайте подсеть сервера 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
Создайте подсеть кластера с помощью
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
Создание управляемого удостоверения и предоставление ему разрешений на виртуальную сеть
Создайте управляемое удостоверение с помощью
az identity create
команды.az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
Назначьте роль участника сети подсети сервера API с помощью
az role assignment create
команды.az role assignment create --scope <apiserver-subnet-resource-id> \ --role "Network Contributor" \ --assignee <managed-identity-client-id>
Назначьте роль участника сети подсети кластера с помощью
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.
Azure Kubernetes Service