有没有办法安排 pods 与持久卷声明具有亲和力?
Is there a way to schedule pods to have affinity with a persistent volume claim?
我有一组我想要的 Kubernetes cronjobs 运行。 Persistent Volume Claim 是 ReadWriteOnce。将有一个作业更新卷上的数据,而其他作业将读取数据。 pvc 一次只能绑定到一个节点,但我的理解(这可能是错误的)是其他 pods 可以只读方式挂载它,前提是它们被安排在正确的节点上。 (显然只有一个pod可以挂载它read/write。)
我看到我可以使用 podAffinity 在同一个节点上安排两个 pods,但是有没有办法对 select 附加了 pvc 的节点使用亲和力?或者在 GKE 中有可能做到这一点吗?我的声明如下所示:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-persistent-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: standard
您应该能够使用带有标签的 Pod Affinity 并将 topologyKey 设置为 kubernetes.io/hostname
来执行此操作。您的关联节看起来像:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- mycronjob
topologyKey: kubernetes.io/hostname
这将在同一节点上安排标签为 app=mycronjob 的作业。
我有一组我想要的 Kubernetes cronjobs 运行。 Persistent Volume Claim 是 ReadWriteOnce。将有一个作业更新卷上的数据,而其他作业将读取数据。 pvc 一次只能绑定到一个节点,但我的理解(这可能是错误的)是其他 pods 可以只读方式挂载它,前提是它们被安排在正确的节点上。 (显然只有一个pod可以挂载它read/write。)
我看到我可以使用 podAffinity 在同一个节点上安排两个 pods,但是有没有办法对 select 附加了 pvc 的节点使用亲和力?或者在 GKE 中有可能做到这一点吗?我的声明如下所示:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-persistent-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
storageClassName: standard
您应该能够使用带有标签的 Pod Affinity 并将 topologyKey 设置为 kubernetes.io/hostname
来执行此操作。您的关联节看起来像:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- mycronjob
topologyKey: kubernetes.io/hostname
这将在同一节点上安排标签为 app=mycronjob 的作业。