【问题标题】:Kubernetes : use node labels in yaml deployment [duplicate]Kubernetes:在 yaml 部署中使用节点标签
【发布时间】:2018-07-10 19:15:01
【问题描述】:

我有一个关于 kubernetes yaml 文件的快速问题:

我可以使用节点标签作为变量来引用 pvc 中的节点标签值吗?

类似:

  volumes:
    - name: data-storage
      persistentVolumeClaim:
        claimName: main-dev-pvc-${node.failure-domain.beta.kubernetes.io/zone}

有可能吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    是强制使用在特定区域创建的 PV 的想法吗? StorageClass 可以提供帮助。

    自定义存储类:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ssd-usc1a
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-ssd
      zones: us-central1-a
    

    引用自定义存储类的PVC:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: main-dev-pvc-ssd-usc1a
      namespace: dev-project
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      storageClassName: ssd-usc1a
    

    假设与 PVC 相同的命名空间:

      volumes:
        - name: data-storage
          persistentVolumeClaim:
            claimName: main-dev-pvc-ssd-usc1a
    

    Kubernetes 将尝试将 Pod 调度到 PV 所在区域(上例中的 us-central1-a)中的节点上。来自文档的引用:“......调度程序(通过 VolumeZonePredicate 谓词)还将确保声明给定卷的 pod 仅放置在与该卷相同的区域中,因为卷不能跨区域附加”。因此,如果没有合适的节点,调度就会失败。

    【讨论】:

    • 我认为这就是它可以工作的确切方式。我的管理员创建了 2 个不同的 storageClass:nfs-site1 和 nfs-site2 这些存储类代表 2 个不同地理站点上的 nfs 存储。我不认为我可以在我的部署 yaml 中动态引用这些存储类。我对吗 ?我不需要一种方法来告诉 pod 选择好的 pvc,并根据当前的托管节点引用好的存储类吗?
    • @Guillaume 恰恰相反——在其他条件中,调度程序根据声明(PVC)创建持久卷(PV)的区域来确定放置 pod 的节点.另见Running in Multiple Zones。部署定义卷,包括来自 PVC 的卷; PVC 以及由此创建的 PV 必须在从部署配置创建 pod 之前存在。 StorageClass 在 PVC 配置中指定,而不是在部署配置中。
    • 谢谢你,我将采用这种方法,因为@Artem 说在 k8s yamls 中没有使用变量的默认方法,所以我无法实现我试图做的事情。
    【解决方案2】:

    默认情况下,您不能在 Kubernetes yaml 文件中使用变量。

    但是有一些工具具有这样的功能,例如helm。或者你可以使用 Ansible 之类的自动化工具,根据一些规则创建带有一些参数的 Kubernetes 资源。

    【讨论】:

    • 很遗憾,当一个 geosite 关闭并且我的 pod 被重新安排在另一个站点上时,helm 无法帮助我,并且必须使用另一个 pvc。
    猜你喜欢
    • 2020-07-08
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多