Развертывание BDC в частном кластере Службы Azure Kubernetes (AKS)

Important

Кластеры больших данных Microsoft SQL Server 2019 прекращены. Поддержка кластеров больших данных SQL Server 2019 закончилась с 28 февраля 2025 г. Дополнительные сведения см. в записи блога объявлений и параметрах больших данных на платформе Microsoft SQL Server.

В этой статье объясняется, как развернуть кластеры больших данных SQL Server в частном кластере Службы Azure Kubernetes (AKS). Эта конфигурация поддерживает ограниченное использование общедоступных IP-адресов в корпоративной сетевой среде.

Частное развертывание обеспечивает следующие преимущества:

  • Ограниченное использование общедоступных IP-адресов
  • Сетевой трафик между серверами приложений и пулами узлов кластера остается только в частной сети.
  • Пользовательская конфигурация для обязательного исходящего трафика в соответствии с конкретными требованиями

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

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

Чтобы приступить к работе, создайте частный кластер AKS , чтобы убедиться, что сетевой трафик между сервером API и пулами узлов остается только в частной сети. На уровне управления или сервере API есть внутренние IP-адреса в частном кластере AKS.

В этом разделе показано, как развернуть кластер больших данных в частном кластере Службы Azure Kubernetes (AKS) с расширенной сетью (CNI).

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


export REGION_NAME=<your Azure region >
export RESOURCE_GROUP=< your resource group name >
export SUBNET_NAME=aks-subnet
export VNET_NAME=bdc-vnet
export AKS_NAME=< your aks private cluster name >
 
az group create -n $RESOURCE_GROUP -l $REGION_NAME
 
az network vnet create \
    --resource-group $RESOURCE_GROUP \
    --location $REGION_NAME \
    --name $VNET_NAME \
    --address-prefixes 10.0.0.0/8 \
    --subnet-name $SUBNET_NAME \
    --subnet-prefix 10.1.0.0/16
 

SUBNET_ID=$(az network vnet subnet show \
    --resource-group $RESOURCE_GROUP \
    --vnet-name $VNET_NAME \
    --name $SUBNET_NAME \
    --query id -o tsv)
 
echo $SUBNET_ID
## will be displayed something similar as the following: 
/subscriptions/xxxx-xxxx-xxx-xxxx-xxxxxxxx/resourceGroups/your-bdc-rg/providers/Microsoft.Network/virtualNetworks/your-aks-vnet/subnets/your-aks-subnet

Создание частного кластера AKS с расширенными сетями (CNI)

Чтобы перейти к следующему шагу, необходимо подготовить кластер AKS с поддержкой стандартной подсистемы балансировки нагрузки с включенной функцией частного кластера. Команда будет выглядеть следующим образом:

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_NAME \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --network-plugin azure \
    --vnet-subnet-id $SUBNET_ID \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --node-vm-size Standard_D13_v2 \
    --node-count 2 \
    --generate-ssh-keys

После успешного развертывания, вы можете перейти в <MC_yourakscluster> группу ресурсов, и вы обнаружите, что kube-apiserver является частной конечной точкой. Например, см. следующий раздел.

Подключение к кластеру AKS

az aks get-credentials -n $AKS_NAME -g $RESOURCE_GROUP

Создание профиля развертывания кластера больших данных

После подключения к кластеру AKS можно начать развертывание BDC и подготовить переменную среды и инициировать развертывание:

azdata bdc config init --source aks-dev-test --target private-bdc-aks --force

Создайте и настройте настраиваемый профиль развертывания BDC:

azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.docker.imageTag=2019-CU6-ubuntu-16.04"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.data.className=default"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.logs.className=default"

azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[1].serviceType=NodePort"

azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.master.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.gateway.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.appproxy.spec.endpoints[0].serviceType=NodePort"

Развертывание частного кластера больших данных SQL Server с высоким уровнем доступности

Если вы развертываете кластер больших данных SQL Server (SQL-BDC) с высоким уровнем доступности (HA), вы будете использовать профиль развертывания aks-dev-test-ha . После успешного развертывания можно использовать ту же kubectl get svc команду, и вы увидите, что создается дополнительная master-secondary-svc служба. Необходимо настроить ServiceType как NodePort. Другие шаги будут аналогичны тому, что упоминалось в предыдущем разделе.

В следующем примере ServiceType задается как NodePort.

azdata bdc config replace -c private-bdc-aks /bdc.json -j "$.spec.resources.master.spec.endpoints[1].serviceType=NodePort"

Развертывание BDC в частном кластере AKS

export AZDATA_USERNAME=<your bdcadmin username>
export AZDATA_PASSWORD=< your bdcadmin password>

azdata bdc create --config-profile private-bdc-aks --accept-eula yes

Проверка состояния развертывания

Развертывание займет несколько минут, и для проверки состояния развертывания можно использовать следующую команду:

kubectl get pods -n mssql-cluster -w

Проверка состояния службы

Чтобы проверить службы, используйте следующую команду. Убедитесь, что они все работоспособны без внешних IP-адресов:

kubectl get services -n mssql-cluster

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

См. сценарии автоматизации для этого сценария в репозитории примеров SQL Server на GitHub.