使用 Azure 磁盘卷

GKE on Azure 会自动部署 azuredisk-csi-driver,以在集群中预配和管理 Azure 磁盘卷。

GKE on Azure Azure Disk CSI 驱动程序版本与 Kubernetes 集群版本相关联。此驱动程序版本通常是发布 GKE 版本时可用的最新版本。集群升级后,驱动程序会自动更新。

如需详细了解 GKE on Azure 如何提供永久性存储,请参阅存储概览

默认存储类别

GKE on Azure 默认提供以下 StorageClass 选项:

准备工作

使用默认 StorageClass

如果您在不设置字段 spec.storageClassName 的情况下创建 PersistentVolumeClaim,则 GKE on Azure 会使用默认的 GKE on Azure Azure Disk CSI 驱动程序 StorageClass 预配 Azure 标准 SSD 卷

以下 YAML 会创建一个名为 mypvc 的 PersistentVolumeClaim (PVC),其大小为 30 吉比字节。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

使用 Premium 存储类别

当您创建 PersistentVolumeClaim 并将字段 spec.storageClassName 重命名为 premium-rwo 时,GKE on Azure 会预配 Azure 付费 SSD 卷

以下 YAML 会创建一个名为 mypvc 的 PersistentVolumeClaim (PVC),其大小为 30 吉比字节。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  storageClassName: premium-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

在 StatefulSet 中引用 StorageClass

要使用新的 StorageClass,您可以在 StatefulSet 的 volumeClaimTemplates 中引用它。

当您在 StatefulSet 的 volumeClaimTemplates 规范中引用 StorageClass 时,Kubernetes 会使用 PersistentVolume (PV) 提供稳定的存储。Kubernetes 会调用在 StorageClass 中定义的预配工具以创建新的存储卷。预配了卷之后,Kubernetes 会自动创建一个 PV。

以下 StatefulSet 引用 premium-rwo StorageClass,并预配 1 GiB 的卷:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: registry.k8s.io/nginx-slim:0.8
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates: # This is the specification in which you reference the StorageClass
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
      storageClassName: premium-rwo # This field references the existing StorageClass

后续步骤