部署到Kubernetes';通过Helm实现本地持久存储

部署到Kubernetes';通过Helm实现本地持久存储,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,使用Kubernetes 1.7.0,这里的目的是能够部署MySQL/MongoDB/etc,并使用本地磁盘作为存储备份;而webheads和processing Pod可以通过Kubernetes自动缩放。为了这些目标,我已经 设置并部署自动将本地连接的磁盘调配到pods的Persistent Volume声明 手动创建了一个持久卷声明,该声明成功,并且本地卷已连接 试图通过helm部署MariaDB helm install--name mysql--set persistence.sto

使用Kubernetes 1.7.0,这里的目的是能够部署MySQL/MongoDB/etc,并使用本地磁盘作为存储备份;而webheads和processing Pod可以通过Kubernetes自动缩放。为了这些目标,我已经

  • 设置并部署自动将本地连接的磁盘调配到pods的Persistent Volume声明
  • 手动创建了一个持久卷声明,该声明成功,并且本地卷已连接
  • 试图通过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部署到供应器拥有卷的同一pod?

不幸的是,没有。您需要指定节点关联性,以便pod位于本地存储所在的节点上。请参阅以了解如何添加到舵图中

我怀疑你的情况会像下面这样

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - kubemaster
顺便说一句,对于AWS和GCP等云环境,这将不仅在节点级别发生,而且在区域级别也会发生。在这些环境中,持久性磁盘是分区的,需要您设置
NodeAffinity
,以便在部署到多区域群集时,POD与持久性磁盘一起降落在分区中


另一方面,看起来你要部署到Kubernetes大师那里?如果MySQL可能会影响到主机的操作,那么也许不可取。

也许您可以考虑使用NFS而不是附加本地卷。