关于kubernetes yaml文件,我有一个简短的问题:
可以使用节点标签作为变量,引用pvc中的节点标签值吗?
类似于:
volumes:
- name: data-storage
persistentVolumeClaim:
claimName: main-dev-pvc-${node.failure-domain.beta.kubernetes.io/zone}有可能吗?
发布于 2018-07-10 08:34:20
强制使用PV的想法是在特定区域中创建的吗?StorageClass可以帮助实现这一点。
自定义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-usc1aKubernetes将尝试在PV所在的同一区域中的节点上调度pod (在上面的示例中为us-cental1-a)。引用文档中的话:"...The scheduler (通过VolumeZonePredicate谓词)还将确保声明给定卷的pods仅放置在与该卷相同的区域中,因为卷不能跨区域附加“。因此,如果没有这样合适的节点,调度将失败。
发布于 2018-07-10 19:15:02
默认情况下,不能在Kubernetes yaml文件中使用变量。
但也有一些工具具有这样的功能,例如helm。也可以使用Ansible等自动化工具,按照一定的规则,通过一定的参数来创建Kubernetes资源。
https://stackoverflow.com/questions/51247790
复制相似问题