在 Azure Kubernetes 服务 (AKS) 专用群集中部署 BDC

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

本文介绍了如何在 Azure Kubernetes 服务 (AKS) 专用群集上部署 SQL Server 大数据群集。 此配置支持在企业网络环境中限制使用公共 IP 地址。

专用部署具有以下优势:

  • 限制使用公共 IP 地址
  • 应用程序服务器和群集节点池之间的网络流量仅停留在专用网络上
  • 可自定义必需的出口流量配置,来满足特定要求

本文介绍了如何在应用各自的安全字符串的同时使用 AKS 专用群集来限制使用公共 IP 地址。

通过 AKS 专用群集部署专用大数据群集

首先,创建一个 AKS 专用群集,确保 API 服务器和节点池之间的网络流量仅停留在专用网络上。 控制平面或 API 服务器具有 AKS 专用群集的内部 IP 地址。

本部分介绍了如何在具有高级网络 (CNI) 的 Azure Kubernetes 服务 (AKS) 专用群集中部署大数据群集。

创建具有高级网络的专用 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

通过高级网络 (CNI) 创建 AKS 专用群集

若要进行下一步,需要在启用了专用群集功能的情况下使用标准负载均衡器来预配 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 大数据群集

如果部署高可用性 (HA) SQL Server 大数据群集 (SQL-BDC),则将使用 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"

在 AKS 专用群集中部署 BDC

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 大数据群集

有关此方案的自动化脚本,请参阅 GitHub 上的 SQL Server 示例存储库