你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:安装 Azure 容器存储以用于 Azure Kubernetes 服务

Azure 容器存储是一项基于云的卷管理、部署和业务流程服务,专为容器原生构建。 在本文中,你将创建 Azure Kubernetes 服务 (AKS) 群集,并在该群集上安装 Azure 容器存储的最新生产版本。 如果你已部署 AKS 群集,则我们建议你使用此快速入门安装 Azure 容器存储,而不是按照本教程中的手动步骤操作。

重要

Azure 容器存储现已正式发布 (GA),最低版本是 1.1.0。 建议对生产工作负载使用此 GA 版本。

  • 创建资源组
  • 选择数据存储选项和 VM 类型
  • 创建 AKS 群集
  • 连接到群集
  • 标记节点池
  • 将 Azure 容器存储操作员角色分配给 AKS 托管标识
  • 安装 Azure 容器存储

先决条件

  • 如果没有 Azure 订阅,请在开始之前创建一个免费帐户

  • 本文需要 Azure CLI 的最新版本(2.35.0 或更高版本)。 请参阅如何安装 Azure CLI。 如果你在 Azure Cloud Shell 中使用 Bash 环境,则表示已安装最新版本。 如果你打算在本地(而不是 Azure Cloud Shell 中)运行命令,请务必使用管理员权限运行命令。 有关详细信息,请参阅开始使用 Azure Cloud Shell

  • 你将需要 Kubernetes 命令行客户端 kubectl。 如果你使用的是 Azure Cloud Shell,则它已安装,或者可以通过运行 az aks install-cli 命令在本地安装它。

  • 检查 Azure 容器存储区域是否支持你的目标区域。

使用入门

  • 记下 Azure 订阅 ID。 如果要将 Azure 弹性 SAN 用作数据存储,则需要将 Azure 容器存储所有者角色或 Azure 容器存储参与者角色分配给 Azure 订阅。 借助所有者级访问权限,可以安装 Azure 容器存储扩展、授予对其存储资源的访问权限,并向你授予配置 Azure 弹性 SAN 资源的权限。 借助参与者级访问权限,可以安装扩展并授予对其存储资源的访问权限。 如果计划将 Azure 磁盘或临时磁盘用作数据存储,则不需要对订阅具有特殊权限。

  • 启动 Azure Cloud Shell,或者如果你使用的是本地安装,请使用 az login 命令登录到 Azure CLI。

  • 如果使用 Azure Cloud Shell,系统可能会提示装载存储。 选择要在其中创建存储帐户的 Azure 订阅,然后选择“创建”。

安装所需的扩展

通过运行以下命令添加或升级到最新版本的 k8s-extension

az extension add --upgrade --name k8s-extension

设置订阅上下文

使用 az account set 命令设置 Azure 订阅上下文。 可以通过运行 az account list --output table 命令来查看有权访问的所有订阅的订阅 ID。 请记住要将 <subscription-id> 替换为你的订阅 ID。

az account set --subscription <subscription-id>

创建资源组

Azure 资源组是一个逻辑组,用于保存要作为组管理的 Azure 资源。 创建资源组时,系统会提示你指定一个位置。 此位置是:

  • 资源组元数据的存储位置。
  • 在创建资源期间未指定另一个区域时,资源在 Azure 中的运行位置。

使用 az group create 命令创建资源组。 将 <resource-group-name> 替换为要创建的资源组的名称,将 <location> 替换为 Azure 区域,如 eastus、westus2、westus3 或 westeurope。

az group create --name <resource-group-name> --location <location>

如果已成功创建资源组,则会看到如下所示的输出:

{
  "id": "/subscriptions/<guid>/resourceGroups/myContainerStorageRG",
  "location": "eastus",
  "managedBy": null,
  "name": "myContainerStorageRG",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

选择数据存储选项和虚拟机类型

在创建群集之前,你应了解你最终选择用来创建存储池的后端存储选项。 这是因为不同的存储服务适用于不同的虚拟机 (VM) 类型作为群集节点,你需要在创建存储池之前部署群集。

数据存储选项

  • Azure 弹性 SAN:Azure 弹性 SAN 非常适合常规用途数据库、流式处理和消息传递服务、CD/CI 环境以及其他第 1 层/第 2 层工作负载。 根据创建的卷和卷快照按需预配存储。 多个群集可以同时访问单个 SAN,但永久性卷一次只能由一个使用者附加。

  • Azure 磁盘:Azure 磁盘非常适合 MySQL、MongoDB 和 PostgreSQL 等数据库。 存储是按目标容器存储池大小和最大卷大小预配的。

  • 临时磁盘:此选项使用 AKS 节点上的本地 NVMe 或临时 SSD 驱动器,对延迟非常敏感(低的亚毫秒延迟),因此它最适合没有数据持久性要求或带内置数据复制支持的应用程序,如 Cassandra。 AKS 会发现 AKS 节点上的可用临时存储,并获取驱动器进行卷部署。

资源消耗

Azure 容器存储需要某些节点资源才能为服务运行组件。 根据存储池类型选择,将在安装 Azure 容器存储时指定这些资源:

存储池类型 CPU 核心数 RAM
Azure 弹性 SAN  无
Azure 磁盘 1 1 GiB
临时磁盘 - 临时 SSD 1 1 GiB
临时磁盘 - 本地 NVMe(标准层) 25% 的核心(可更新性能层)* 1 GiB

消耗的资源是按节点计算的,并将在安装 Azure 容器存储的节点池中为每个节点进行消耗。 如果节点没有足够的资源,Azure 容器存储将无法运行。 Kubernetes 将自动重新尝试初始化这些失败的 Pod,因此,如果资源得到解放,则可以再次初始化这些 Pod。

*在存储池类型临时磁盘 - 具有标准(默认)性能层的本地 NVMe 中,如果对群集节点使用多个 VM SKU 类型,则消耗的 25% 的 CPU 核心适用于所使用的最小 SKU。 例如,如果混合使用 8 核和 16 核 VM 类型,则资源消耗为 2 个核心。 可以更新性能层以使用更大百分比的核心并实现更大的 IOPS。

确保群集的 VM 类型满足以下条件

若要使用 Azure 容器存储,需要至少包含三个 Linux VM 的节点池。 每个 VM 应至少有 4 个虚拟 CPU (vCPU)。 Azure 容器存储将使用一个核心在部署扩展的每个 VM 上进行 I/O 处理。

为群集节点选择 VM 类型时,请遵循以下准则。 必须选择支持 Azure 高级存储的 VM 类型。

  • 如果打算将 Azure 弹性 SAN 或 Azure 磁盘用作后备存储,请选择常规用途 VM 类型,例如 standard_d4s_v5。
  • 如果打算将临时磁盘与本地 NVMe 配合使用,请选择存储优化 VM 类型,例如 standard_l8s_v3
  • 如果打算将临时磁盘与临时 SSD 配合使用,请选择具有临时 SSD 盘的 VM,例如 Ev3 和 Esv3 系列

创建新的 AKS 群集并安装 Azure 容器存储

如果已部署 AKS 群集,请按照本快速入门中的安装说明进行操作。

运行以下命令以创建新的 AKS 群集、安装 Azure 容器存储以及创建存储池。 使用自己的值替换 <cluster-name><resource-group>,并指定要使用的 VM 类型。 将 <storage-pool-type> 替换为 azureDiskephemeralDiskelasticSan。 如果选择 ephemeralDisk,还必须指定 --storage-pool-option,值可以为 NVMeTemp

运行此命令将在具有三个 Linux VM 的系统节点池* 上启用 Azure 容器存储。 如果要为存储池类型指定本地 NVMe,请确保将节点计数设置为 4 或更大,否则命令将无法运行。

默认情况下,系统节点池命名为 nodepool1。 若要在其他节点池上启用 Azure 容器存储,请参阅“在特定节点池上安装 Azure 容器存储”。 如果要使用此命令指定其他存储池参数,请参阅此表

*如果有任何具有 acstor.azure.com/io-engine:acstor 标签的现有节点池,则默认情况下会安装 Azure 容器存储。 否则,它安装在系统节点池上。

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_D4s_v3 --node-count 3 --enable-azure-container-storage <storage-pool-type>

完成部署将需要 10-15 分钟。 完成后,你将安装一个 AKS 群集,其中安装了 Azure 容器存储、已启用所选存储池类型的组件和默认存储池。 如果要启用其他存储池类型来创建其他存储池,请参阅“启用其他存储池类型”。

重要

如果将 Azure 弹性 SAN 指定为存储池的后备存储,并且没有将 Azure 容器存储所有者角色或 Azure 容器存储参与者角色分配给 Azure 订阅,则 Azure 容器存储安装将失败,并且不会创建存储池。 如果尝试将 Azure 弹性 SAN 作为其他存储池类型启用,但没有任何这些角色,则以前的安装和存储池将不受影响,并且不会创建弹性 SAN 存储池。

显示可用的存储池

若要获取可用存储池的列表,请运行以下命令:

kubectl get sp -n acstor

若要检查存储池的状态,请运行以下命令:

kubectl describe sp <storage-pool-name> -n acstor

如果 Message 没有说明 StoragePool is ready,则存储池仍在创建中或遇到问题。 请参阅Azure 容器存储排除故障

下一步

选择所选支持存储类型的链接,并按照创建卷的说明进行操作。