快速入门:使用 Helm 图表将 SQL Server Linux 容器部署到 Kubernetes

适用于:SQL Server - Linux

本快速入门将引导你完成以下步骤:使用 Helm 图表将 Linux 上的 SQL Server 容器从 Windows 客户端计算机部署到 Azure Kubernetes 服务 (AKS)。

AKS 是用于部署和管理容器群集的托管 Kubernetes 服务。 Helm 是一种开放源打包工具,有助于安装和管理 Kubernetes 应用程序的生命周期。

必备条件

  • Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户

  • 创建 AKS 群集

  • 下载并查看本快速入门的示例 Helm 图表 。 此示例图表包含许多用于自定义 SQL Server 部署的配置选项。

安装客户端工具

在 Windows 客户端计算机上,需要以下工具。

  • 适用于 Windows VM 的 Azure CLI
  • 适用于 Windows 的Helm

如果想要使用不同的客户端操作系统,则需要为该平台选择相应的包。

使用 Az PowerShell 模块安装 kubectl

需要使用 kubectl 与 Kubernetes 群集进行交互。 有关详细信息,请参阅 az aks install-cli

要安装 kubectl,请在 Windows 命令提示符下运行以下命令:

az aks install-cli

提示

可以将 kubectl 添加到本地 PATH 环境变量,这样便不必每次都键入完整路径。

将 kubectl 连接到 AKS 群集

  1. 需要合并 AKS 群集的上下文,以便 kubectl 或 helm 命令在该特定 AKS 群集上运行。

    要合并,请运行连接到 AKS 群集一文中所述的命令:

    az aks get-credentials --resource-group <resourcegroupname> --name <aks clustername>
    

    应会看到以下输出,其中 <clustername> 是提供的群集,并且 <username> 是本地 Windows 用户帐户:

    Merged "<clustername>" as current context in C:\Users\<username>\.kube.config
    
  2. 通过运行 kubectl get nodes 确认合并成功。 输出应在 AKS 群集的上下文中显示节点。

    NAME                    STATUS   ROLES   AGE    VERSION
    <aks-node>-vmss000000   Ready    agent   141d   v1.16.13
    <aks-node>-vmss000001   Ready    agent   141d   v1.16.13
    

查看示例 Helm 图表

现在,可以通过 Helm 图表在 AKS 群集上部署 SQL Server。

本快速入门提供了示例“原样”示例“原样”Helm 图表。 此示例仅供参考。 请记住查看 readme 文件以了解符合配置要求的配置值。

如果希望在 StatefulSet 模式下部署 SQL Server(推荐模式),可查看“原样”基于 StatefulSet 的 Helm 图表示例部署。

  1. 下载示例 Helm 图表

  2. 切换到下载示例图表的目录,并根据需要修改 values.yaml 文件。

将 SQL Server 部署到 AKS 群集

使用以下命令部署 SQL Server。 部署名称是可自定义的,因此可将 mssql-latest-deploy 更改为所需的任何内容。

helm install mssql-latest-deploy . --set ACCEPT_EULA.value=Y --set MSSQL_PID.value=Developer

在上面的示例中,图表及其文件位于当前目录中,用句点 (.) 表示。 如果需要,可以指定图表的路径。

如果成功,可看到以下类似输出:

NAME: mssql-latest-deploy
LAST DEPLOYED: Wed Apr 06 21:36:19 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1

验证 SQL Server 部署

部署到 Kubernetes 群集可能需要几分钟时间。 若要验证部署是否成功,请运行以下命令:

kubectl get all

如果成功,可看到以下类似输出:

NAME                                      READY   STATUS    RESTARTS   AGE
pod/mssql-latest-deploy-7f8c7f5bc-9grmg   1/1     Running   0          2m56s

NAME                          TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/kubernetes            ClusterIP      10.0.0.1       <none>        443/TCP          141d
service/mssql-latest-deploy   LoadBalancer   10.0.247.220   20.40.0.145   1433:30780/TCP   2m56s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mssql-latest-deploy   1/1     1            1           2m56s

NAME                                            DESIRED   CURRENT   READY   AGE
replicaset.apps/mssql-latest-deploy-7f8c7f5bc   1         1         1       2m56s

连接到在 AKS 上运行的 SQL Server

可使用任何熟悉的 SQL Server 客户端工具连接到 SQL Server 实例,例如 SQL Server Management Studio (SSMS)、Azure Data Studio 或 sqlcmd。

例如,如果使用 SSMS 连接到 SQL Server 实例,可以使用以下设置:

  • 服务器名称: 使用 mssql-latest-deploy 服务的 External-IP 地址。 在此示例中,它是 20.40.0.145
  • 身份验证:从下拉列表中选择“SQL Server 身份验证”。
  • 登录:使用 sa,这是系统管理员帐户。
  • 密码:sa 密码与 Helm 图表的 values.yaml 文件中的 sa_password 配置选项中提供的值匹配。

连接后,即可在对象资源管理器中扩展 SQL Server 实例。

Screenshot showing the Object Explorer connected to the database instance.

清理资源

如果不打算继续使用 AKS 群集,请记住删除群集