azure - 使用 terraform 在 AKS 中创建 PV 使用默认存储类

标签 azure terraform azure-aks terraform-provider-azure kubernetes-pvc

我想使用 AKS 群集附带的默认存储类在 AKS 群集中通过 terraform 创建 PVC。这里是doc

如果我执行kubectl get sc,我会得到:

enter image description here

但不确定如何使用 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"
      }
    }
  }
}

但它说:参数“data_disk_uri”是必需的,但未找到定义。

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

最佳答案

您不能仅使用存储类别创建 PV,因为 StorageClass 为管理员提供了一种描述他们提供的存储“类别”的方法。每个 StorageClass 都有一个配置程序,用于确定使用什么卷插件来配置 PV。必须指定该字段。

卷插件将是 Azure DiskAzure FilesAWSElasticBlockStore 等等,您可以引用 document用于存储类的可用卷插件。

每个StorageClass都包含字段provisioner、parameters和reclaimPolicy,当属于该类的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

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

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

引用:https://kubernetes.io/docs/concepts/storage/storage-classes/

关于azure - 使用 terraform 在 AKS 中创建 PV 使用默认存储类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71430954/

相关文章:

google-cloud-platform - 如何在 terraform 中正确创建具有角色的 gcp 服务帐户

amazon-web-services - Terraform WAF Web ACL 资源没用?

docker - 使用Docker和Azure Kubernetes(AKS)托管的Angular Application的SSL证书配置

azure - 错误: Rotate certificates in Azure Kubernetes Service (AKS)

Azure aks 集群 - 每个代理的额外磁盘存储

azure - Azure 的 DiagnosticMonitorConfiguration 的生命周期是多长?

Azure Function Apps V4 上的 .NET Framework(dotnet 隔离): ConfigurationManager not working

c# - 从 Azure IoT 中心获取设备列表

terraform - 为什么我需要 "update"路径上的 "auth/token/create"功能来读取 AWS secret 引擎生成的 secret ?

azure - 注册期间将 "email"存储在联系信息中 - Azure AD B2C 自定义策略