1

使用Kubernetes 1.7.0,这里的意图是能够部署MySQL / MongoDB / etc,并使用本地磁盘作为存储支持;而 webheads 和处理 pod 可以由 Kubernetes 自动扩展。为了这些目标,我已经

  • 设置和部署本地持久存储配置程序,以自动将本地连接的磁盘配置到 pod 的持久卷声明。
  • 手动创建了一个Persistent Volume Claim,成功,并且附加了本地卷
  • 尝试通过 helm 部署 MariaDB

    helm install --name mysql --set persistence.storageClass=default stable/mariadb

  • 这似乎成功了;但是通过进入仪表板,我得到

卷“local-pv-8ef6e2af”的存储节点关联性检查失败:NodeSelectorTerm [{Key:kubernetes.io/hostname Operator:In Values:[kubemaster]}] 与节点标签不匹配

我怀疑这可能是由于 helm 的图表不包括节点亲和力。除了手动更新每个图表之外,有没有办法告诉 helm 部署到供应商拥有卷的同一个 pod?

4

1 回答 1

1

抱歉不行。您将需要指定节点亲和性,以便 Pod 降落在本地存储所在的节点上。请参阅Node Affinity 上的文档以了解向 helm 图表添加的内容。

我怀疑在你的情况下它看起来像下面这样。

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - kubemaster

顺便说一句,这将发生,不仅在节点级别,而且在 AWS 和 GCP 等云环境的区域级别。在这些环境中,永久性磁盘是区域性的,并且需要您进行设置NodeAffinity,以便在部署到多区域集群时,Pod 位于带有永久性磁盘的区域中。

顺便说一句,看起来您正在部署到 Kubernetes 主服务器?如果是这样,那可能是不可取的,因为 MySQL 可能会影响 master 的操作。

于 2017-07-10T01:36:04.450 回答