你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器存储是一种基于云的卷管理、部署和编排服务,专为容器原生构建。 在本教程中,你将创建 一个 Azure Kubernetes 服务(AKS) 群集,并在群集上安装 Azure 容器存储(版本 1.x.x)。 如果已部署 AKS 群集,建议 使用本快速入门 安装 Azure 容器存储(版本 1.x.x),而不是按照本教程中的手动步骤作。
重要
本文介绍如何安装 Azure 容器存储(版本 1.x.x),该存储现在显式要求安装版本固定参数 --container-storage-version 1 。
Azure 容器存储(版本 2.x.x) 现已推出。
- 创建资源组
- 选择数据存储选项和 VM 类型
- 创建 AKS 群集
- 连接至群集
- 标记节点池
- 将 Azure 容器存储操作员角色分配给 AKS 托管标识
- 安装 Azure 容器存储(版本 1.x.x)
先决条件
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
本文需要最新版本的 Azure CLI。 请参阅 如何安装 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。 请记得用你的订阅 ID 替换 <subscription-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 | None | None |
| 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 至少应有四个虚拟 CPU(vCPU)。 Azure 容器存储将使用一个核心来处理扩展部署到的每个 VM 上的 I/O 处理。
为群集节点选择 VM 类型时,请遵循以下准则。 必须选择支持 Azure 高级存储的 VM 类型。
- 如果打算使用 Azure 弹性 SAN 或 Azure 磁盘作为支持存储,请选择 常规用途 VM 类型 ,例如 standard_d4s_v5。
- 如果打算将临时磁盘与本地 NVMe 配合使用,请选择支持本地 NVMe 磁盘的 VM SKU,例如 存储优化的 VM SKU 或 GPU 加速 VM SKU。
- 如果打算将临时磁盘与临时 SSD 配合使用,请选择具有临时 SSD 磁盘的 VM,例如 Ev3 和 Esv3 系列。
创建新的 AKS 群集并安装 Azure 容器存储
如果已部署 AKS 群集,请按照 本快速入门中的安装说明进行作。
运行以下命令以创建新的 AKS 群集、安装 Azure 容器存储以及创建存储池。 将 <cluster-name> 和 <resource-group> 替换为您自己的值,并指定要使用的虚拟机类型。 替换为<storage-pool-type>azureDisk、ephemeralDisk或elasticSan。 如果选择 ephemeralDisk,则还必须指定 --storage-pool-option值,并且值可以是 NVMe 或 Temp。
运行此命令将在具有三个 Linux VM 的系统节点池* 上启用 Azure 容器存储。 如果要为存储池类型指定本地 NVMe,请确保将节点计数设置为 4 或更大,否则命令将无法运行。
默认情况下,系统节点池命名 nodepool1。 若要在其他节点池上启用 Azure 容器存储,请参阅 在特定节点池上安装 Azure 容器存储。 如果要使用此命令指定其他存储池参数,请参阅 此表。
*如果有具有标签的现有节点池 acstor.azure.com/io-engine:acstor ,Azure 容器存储将默认安装数据平面组件。 否则,用户可以选择将首选节点池传递到 acstor Azure CLI。 如果群集只有系统节点池,则默认情况下会标记并用于 Azure 容器存储。 请务必注意,只有数据平面组件仅限于标记的节点池。 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> --container-storage-version 1 --generate-ssh-keys
部署需要 10-15 分钟。 完成后,你将安装一个 AKS 群集,其中安装了 Azure 容器存储、已启用所选存储池类型的组件和默认存储池。 如果要启用其他存储池类型来创建其他存储池,请参阅 “启用其他存储池类型”。
重要
如果将 Azure 弹性 SAN 指定为存储池的后盾存储,并且没有分配给 Azure 订阅的 Azure 容器存储所有者 角色或 Azure 容器存储参与者 角色,则 Azure 容器存储安装将失败,并且不会创建存储池。 如果尝试在没有上述任一角色的情况下将 Azure Elastic SAN 启用为附加存储池类型 ,则以前的安装和存储池将不受影响,并且不会创建弹性 SAN 存储池。
显示可用的存储池
若要获取可用存储池的列表,请运行以下命令:
kubectl get sp -n acstor
若要检查存储池的状态,请运行以下命令:
kubectl describe sp <storage-pool-name> -n acstor
如果 Message 未说明 StoragePool is ready,则存储池仍在创建或遇到问题。 请参阅 排查 Azure 容器存储问题。
后续步骤
选择所选支持存储类型的链接,并按照创建卷的说明进行操作。