Compartilhar via

教程 - 在 AKS 群集上部署 Azure 容器存储

本教程介绍 Azure 容器存储,并演示如何为 Azure Kubernetes 服务(AKS)上运行的应用程序部署和管理容器本机存储。 如果现在不想部署 Azure 容器存储,可以跳过本教程,直接在 AKS 中部署应用程序。 在本教程系列中,你不需要基础店面应用的 Azure 容器存储。

Azure 容器存储通过提供针对各种工作负载(包括数据库、分析平台和高性能应用程序)定制的容器原生存储,简化了 Kubernetes 中有状态应用程序的管理。

在本教程结束时,你将:

  • 了解 Azure 容器存储如何支持 Kubernetes 中的各种工作负荷。
  • 在 AKS 群集上部署 Azure 容器存储。
  • 创建通用临时卷。

在您开始之前

在前面的教程中,你创建了容器映像,将其上传到 ACR 实例,并创建了 AKS 群集。 从教程 1 - 为 AKS 准备应用程序开始学习。

  • 安装最新版本的 Azure CLI (2.83.0 或更高版本),然后使用它登录 az login。 请勿使用 Azure Cloud Shell,因为 az upgrade 不可用。

  • 安装 Kubernetes 命令行客户端。 kubectl 可以通过运行 az aks install-cli本地安装它。

安装 Kubernetes 扩展

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

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

在 AKS 群集上启用 Azure 容器存储

运行以下命令,使用本地 NVMe 在现有 AKS 群集上启用 Azure 容器存储。 Azure 容器存储会自动安装最新的可用版本和更新本身。 不支持手动版本选择。

az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk

部署最多可能需要五分钟。 完成后,AKS 群集已安装 Azure 容器存储,并部署了本地 NVMe 存储类型的组件。 它还会创建默认 local 存储类。

连接到群集并验证状态

如果尚未从上一教程连接到群集,请运行以下命令。 如果已连接,可以跳过本部分。

  1. 下载群集凭据并配置 Kubernetes CLI 以使用它们。 默认情况下,凭据存储在 ~/.kube/config. 根据需要使用 --file 参数提供其他路径。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. 通过列出群集节点来验证连接。

    kubectl get nodes
    
  3. 确保所有节点都报告状态 Ready

验证存储类

运行以下命令以验证是否已创建存储类:

kubectl get storageclass local

此时会看到与下面类似的输出:

NAME    PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local   localdisk.csi.acstor.io    Delete          WaitForFirstConsumer   true                   10s

使用泛型临时卷部署 Pod

使用 Fio (灵活 I/O 测试器)创建一个 Pod,以进行基准测试和工作负载模拟,使用泛型临时卷。

  1. 使用最喜爱的文本编辑器创建 YAML 清单文件,例如 code fiopod.yaml

  2. 粘贴以下代码并保存文件。

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
        - name: fio
          image: mayadata/fio
          args: ["sleep", "1000000"]
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              spec:
                volumeMode: Filesystem
                accessModes: ["ReadWriteOnce"]
                storageClassName: local
                resources:
                  requests:
                    storage: 10Gi
    
  3. 应用 YAML 清单文件来部署 Pod。

    kubectl apply -f fiopod.yaml
    

进行验证部署并运行基准测试

检查 Pod 是否正在运行:

kubectl get pod fiopod

应会看到 Pod 处于“正在运行”状态。 运行后,可以执行 Fio 基准测试:

kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60

现在,你已部署了一个使用本地 NVMe 作为其存储的 Pod,并可用于 Kubernetes 工作负载。

若要详细了解 Azure 容器存储,请参阅 [什么是 Azure 容器存储?][azure-container-storage]

清理资源

本教程系列教程的其余部分不需要 Azure 容器存储,因此建议立即将其删除,以避免产生不必要的 Azure 费用。

  1. 删除 Pod。

    kubectl delete pod fiopod
    
  2. 删除通用临时卷。

    kubectl delete pv ephemeralvolume
    
  3. 删除扩展实例。

    az aks update -n myAKSCluster -g myResourceGroup --disable-azure-container-storage
    

后续步骤

在本教程中,你在 AKS 群集上部署了 Azure 容器存储。 你已了解如何执行以下操作:

  • 在 AKS 群集上启用 Azure 容器存储。
  • 使用通用临时卷部署 Pod。

下一教程介绍如何将应用程序部署到群集。