使用默认存储在 AKS 中使用 terraform 创建 PV class

Create PV in AKS with terraform Using the default storage class

我想使用 AKS 集群附带的默认存储 class 在 AKS 集群中创建 PVC。这里 doc

如果我这样做 kubectl get sc 我得到:

但不确定如何使用 terraform 代码来引用它们。正在尝试:

resource "kubernetes_persistent_volume" "volume" {
  metadata {
    name = "${var.pv_name}"
  }
  spec {
    capacity {
      storage = "50Gi"
    }
    access_modes = ["ReadWriteOnce"]
    persistent_volume_source {
      azure_disk {
        caching_mode  = "None"
        disk_name     = "managed-premium"
        kind          = "Managed"
      }
    }
  }
}

但是它说:The argument "data_disk_uri" is required, but no definition was found.

我明白了,这表明我应该从 Azure 门户输入磁盘的 URL,但在这种情况下,我没有使用存储 [=28] 在 azure 中创建磁盘=] 由 AKS 提供。 以前有人能够在 AKS 中创建这个吗?

您不能仅使用存储 class 创建 PV,因为存储Class 为管理员提供了一种描述他们提供的“classes”存储的方法。每个 StorageClass 都有一个 provisioner,用于确定使用哪个卷插件来配置 PV。必须指定此字段。

卷插件将是 Azure DiskAzure FilesAWSElasticBlockStore 以及更多您可以参考 document 以获取存储 Class 的可用卷插件.

每个 StorageClass 包含字段 provisioner、parameters 和 reclaimPolicy,当属于 class 的 PersistentVolume 需要动态配置时使用。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp3
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
  - debug
volumeBindingMode: Immediate

默认存储 class 提供标准 SSD Azure 磁盘。持久卷声明 (PVC) 用于根据存储 class 自动配置存储。在这种情况下,PVC 可以使用 pre-created 存储 class 之一来创建标准或高级 Azure 托管磁盘。

因此,根据上述声明,您需要创建像 Azure DIsk 这样的卷插件,没有在没有任何卷插件的情况下使用存储 class 在 AKS 中创建 PV 的选项

参考:https://kubernetes.io/docs/concepts/storage/storage-classes/