Подготовьте AKS с помощью внутреннего балансировщика нагрузки из AMLS в Azure

Я хотел бы подготовить кластер AKS, который подключен к виртуальной сети и имеет внутренний балансировщик нагрузки в Azure. Я использую код из здесь, который выглядит так:

import azureml.core
from azureml.core.compute import AksCompute, ComputeTarget

# Verify that cluster does not exist already
try:
    aks_target = AksCompute(workspace=ws, name=aks_cluster_name)
    print("Found existing aks cluster")

except:
    print("Creating new aks cluster")

    # Subnet to use for AKS
    subnet_name = "default"
    # Create AKS configuration
    prov_config=AksCompute.provisioning_configuration(load_balancer_type="InternalLoadBalancer")
    # Set info for existing virtual network to create the cluster in
    prov_config.vnet_resourcegroup_name = "myvnetresourcegroup"
    prov_config.vnet_name = "myvnetname"
    prov_config.service_cidr = "10.0.0.0/16"
    prov_config.dns_service_ip = "10.0.0.10"
    prov_config.subnet_name = subnet_name
    prov_config.docker_bridge_cidr = "172.17.0.1/16"

    # Create compute target
    aks_target = ComputeTarget.create(workspace = ws, name = "myaks", provisioning_configuration = prov_config)
    # Wait for the operation to complete
    aks_target.wait_for_completion(show_output = True)

Однако я получаю следующую ошибку

K8s failed to assign an IP for Load Balancer after waiting for an hour.

Это потому, что кластер AKS еще не имеет роли «участник сети» для группы ресурсов vnet? Единственный способ заставить это работать - сначала создать AKS вне AMLS, предоставить роль участника сети группе ресурсов vnet, затем подключить кластер AKS к AMLS и затем настроить внутренний балансировщик нагрузки?


person bab689    schedule 29.10.2020    source источник


Ответы (1)


Мне удалось заставить это работать, сначала создав ресурс AKS без внутреннего балансировщика нагрузки, а затем отдельно обновив балансировщик нагрузки, следуя этому коду:

import azureml.core
from azureml.core.compute.aks import AksUpdateConfiguration
from azureml.core.compute import AksCompute

# ws = workspace object. Creation not shown in this snippet
aks_target = AksCompute(ws,"myaks")

# Change to the name of the subnet that contains AKS
subnet_name = "default"
# Update AKS configuration to use an internal load balancer
update_config = AksUpdateConfiguration(None, "InternalLoadBalancer", subnet_name)
aks_target.update(update_config)
# Wait for the operation to complete
aks_target.wait_for_completion(show_output = True)

Роль участника сети не требуется.

person bab689    schedule 02.11.2020