需要帮助设置与 Helm 子图的节点关联性

问题描述 投票:0回答:2

我正在尝试将节点亲和力设置为舵图中的子图,据我了解,我需要使用

--set
参数来执行此操作,但在如何在 cli 中传递该参数时遇到了一些困难。这是我试图设置的等效节点关联性:

mariadb:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: arch
            operator: In
            values:
            - x86_64

尝试这样做,但使用数组声明等,感觉不对(并且不执行任何操作):

helm install gitea gitea-charts/gitea -f ./values.yaml  --set 'memcached.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key.arch=x86_64' --set 'mariadb.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key.arch=x86_64'

kubernetes kubernetes-helm
2个回答
0
投票

我建议做这样的事情,特别是当你有多种类型时,不是使用

--set
而是使用第二个值yaml——或者修改现有的值yaml(如果有的话)。通过 set 覆盖亲和力会变得非常混乱并且可读性不太好。但如果您使用单独的值 yaml,则改为:

helm install gitea gitea-charts/gitea -f ./values.yaml  --set 'memcached.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key.arch=x86_64' --set 'mariadb.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key.arch=x86_64'

你就会有

helm install gitea gitea-charts/gitea -f ./values.yaml

(如果您修改了现有的values.yaml)

helm install gitea gitea-charts/gitea -f ./values.yaml -f ./affinity.yaml

(如果您选择将亲和力放在单独的 yaml 中。)

编辑(艾米丽提供的信息):获取 mariadb pod 的输出:

NAME              READY   STATUS             RESTARTS      AGE
gitea-mariadb-0   0/1     CrashLoopBackOff   5 (55s ago)   3m59s

(Pod 失败,因为 bitnami 图表不支持 Arm,而这是一个 Arm 主机)

它在豆荚里的亲和力:

spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - podAffinityTerm:
          labelSelector:
            matchLabels:
              app.kubernetes.io/component: primary
              app.kubernetes.io/instance: gitea
              app.kubernetes.io/name: mariadb
          namespaces:
          - default
          topologyKey: kubernetes.io/hostname
        weight: 1

affinity.yaml的内容

mariadb:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: arch
            operator: In
            values:
            - x86_64

0
投票

感谢 Blender Fox 的帮助和挖掘。问题是,虽然 memcached 图表嵌套在主配置下,但数据库(postgresql 和 mariadb)具有针对主节点和任何辅助节点的附加设置。我通过在主 gitea 图表中的

affinity:
子图设置覆盖下执行以下操作来修复此问题:
mariadb

编辑 pod 向我证明,现在设置正确,不需要额外的 cli 选项:
<...snip...> primary: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: arch operator: In values: - x86_64 <...snip...>

    

© www.soinside.com 2019 - 2024. All rights reserved.