首页 > 解决方案 > 如何将 STS 应用程序和目标 Pod 调度到 OpenEBS 中的同一节点?

问题描述

我们有一个设置(在 GKE k8s 1.10 中连接了 6 个带有临时 SSD 的节点)和带有 6 个副本的应用程序 StatefulSet。计划是将 1 对 1 个应用程序 pod 映射到一个节点,并使用目标亲和性将 jiva 目标 pod 与应用程序 pod 保持在同一节点上。数据复制/冗余在应用层解决,因此我们需要为存储类设置唯一的 1 个副本。

标签: kubernetesopenebs

解决方案


目标关联策略可用于将卷目标 pod 与工作负载放在同一节点上。

此功能利用依赖于 Pod 标签的 Kubernetes Pod Affinity 功能。用户需要将以下标签添加到应用程序和 PVC。

labels:
  openebs.io/target-affinity: <application-unique-label>

您可以使用以下方式在应用程序和 OpenEBS PVC 中指定 Target Affinity,对于 Application Pod,它将类似于以下内容

apiVersion: v1
kind: Pod
metadata:
  name: fio-jiva
  labels:
    name: fio-jiva
    openebs.io/target-affinity: fio-jiva

对于 OpenEBS PVC,它将类似于以下内容。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: fio-jiva-claim
  labels:
    openebs.io/target-affinity: fio-jiva

注意:此功能仅适用于应用程序和 PVC 之间存在 1-1 映射的情况。不建议将 PVC 指定为模板的 STS。


推荐阅读