将容器存储添加到 Azure Stack Hub 中的 Kubernetes

作为 Kubernetes 社区工作(树中的 Kubernetes 到 CSI 卷的迁移)的一部分,若要将树中的卷提供程序移至容器存储接口 CSI,可以在 Azure Stack 中找到以下 CSI 驱动程序:Azure 磁盘。

详细信息 Azure 磁盘 CSI 驱动程序
项目存储库 azuredisk-csi-driver
CSI 驱动程序版本 v1.0.0+
访问模式 ReadWriteOnce
Windows 代理节点 支持
动态预配 支持
注意事项 Azure 磁盘 CSI 驱动程序限制
Slack 支持渠道 #provider-azure

在 AKSe v0.75.3 及更高版本中,Azure 磁盘 CSI 驱动程序通过 azuredisk-csi-driver 加载项helm chart 用于 Linux 和 Windows 节点。 在离线环境中,仅支持 azuredisk-csi-driver 加载项

要求

  • Azure Stack 版本 2011 及更高版本。
  • AKS 引擎版本 v0.60.1 及更高版本。
  • Kubernetes 版本 1.18 及更高版本。
  • 由于 CSI 驱动程序的控制器服务器需要两个副本,因此不建议使用单节点主池。
  • Helm 3

安装和卸载 CSI 驱动程序

在本部分中,请按照示例命令部署使用 CSI 驱动程序的 StatefulSet 应用程序。

Azure 磁盘 CSI 驱动程序

安装 CSI 驱动程序

DRIVER_VERSION=v1.10.0
helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts
helm install azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver \
  --namespace kube-system \
  --set cloud=AzureStackCloud \
  --set controller.runOnMaster=true \
  --version ${DRIVER_VERSION}

部署存储类

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/storageclass-azuredisk-csi-azurestack.yaml

部署示例 StatefulSet 应用程序

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/statefulset.yaml

验证卷和应用程序

应会看到时间戳序列在卷中持久保存。

kubectl exec statefulset-azuredisk-0 -- tail /mnt/azuredisk/outfile

删除示例 StatefulSet 应用程序

kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/statefulset.yaml

删除存储类

删除存储类之前,请确保已终止使用存储类的 Pod。

kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/storageclass-azuredisk-csi-azurestack.yaml

卸载 CSI 驱动程序

helm uninstall azuredisk-csi-driver --namespace kube-system
helm repo remove azuredisk-csi-driver

Azure Stack Hub 上的 Azure Disk CSI 驱动程序限制

  • Azure 磁盘 IOPS 上限为 2300。 有关详细信息,请参阅 Azure Stack Hub 中支持的 VM 大小
  • Azure Stack Hub 不支持共享磁盘,因此,大于 1 的 maxShares 值在 StorageClass 中无效。
  • Azure Stack Hub 仅支持标准本地冗余 (Standard_LRS) 和高级本地冗余 (Premium_LRS) 存储帐户类型,因此,对于 StorageClass 中的 skuName 参数,只有 Standard_LRSPremium_LRS 有效。
  • Azure Stack Hub 不支持增量磁盘快照,因此仅 false 对 VolumeSnapshotClass 中的参数 incremental 有效。
  • 对于 Windows 代理节点,你需要安装 Windows CSI 代理。 有关详细信息,请参阅 Windows CSI 代理。 若要通过 AKS 引擎 API 模型启用代理,请参阅适用于 Windows 的 CSI 代理

后续步骤