Decision Management (ODM,ADS)

 View Only
  • 1.  ODM 8.11 K8s Azure | ODM for production parameters | .customization.dedicatedNodeLabel

    Posted Thu April 20, 2023 12:52 PM

    Hello All,

    The optional configuration parameter .customization.dedicatedNodeLabel applies a node affinity property to the ODM pods. 
    With node affinity we can tell Kubernetes which nodes to schedule to a pod using the labels on each node. Well then, I want to schedule ODM Decision Server pod into a node in a Azure cluster labeled <label-key>=<label-value>, such as scope=odm
    In the values-ds.yaml Helm chart, I configure the parameter .customization.dedicatedNodeLabel as follows, just with the <label-key> as indicated in the documentation:


    When I install the Helm release, the pod descriptor looks like this:



    Is this correct? Because, the pod is not scheduled into the labeled node.

    I don't understand why I don't get the same structure as for the kubernetes.io/arch key, where is shown the pair <label-key><label-value>
     
    Thank you very much in advance.



    ------------------------------
    Charo Álvarez Martínez
    Automation Architect
    DECIDE
    Madrid
    ------------------------------


  • 2.  RE: ODM 8.11 K8s Azure | ODM for production parameters | .customization.dedicatedNodeLabel

    Posted Fri April 21, 2023 03:11 AM

    Hello Maria,

    Since ODM on k8s version 22.2.0, we provide a nodeAffinity property at each component level and for all using customization https://www.ibm.com/docs/en/odm/8.11.1?topic=reference-odm-production-configuration-parameters

    We describe a usage with the "topology.kubernetes.io/zone" key attached at a node https://www.ibm.com/docs/en/odm/8.11.1?topic=production-configuring-multi-zone-support.

    Can you check if it can fits your need ?




    ------------------------------
    Mathias Mouly
    ------------------------------



  • 3.  RE: ODM 8.11 K8s Azure | ODM for production parameters | .customization.dedicatedNodeLabel

    Posted Mon April 24, 2023 05:26 AM

    Hello Mathias,

    ODM version is 8.11.0 instead 8.11.1. However, I have tried to add --set customization.labels.scope=odm parameter in the command line installation (.customization.dedicatedNodeLabel blank into YAML chart file), but it does not work. The label does not appear into pod descriptor YAML file.


    Any suggestions?

    Thanks!



    ------------------------------
    Charo Álvarez Martínez
    Automation Architect
    DECIDE
    Madrid
    ------------------------------



  • 4.  RE: ODM 8.11 K8s Azure | ODM for production parameters | .customization.dedicatedNodeLabel
    Best Answer

    Posted Mon April 24, 2023 08:59 AM

    Hello Maria,

    My understanding is that you want to deploy ODM pods on a specific node that have the scope=odm label like https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/#schedule-a-pod-using-required-node-affinity. Is it what you want to do ?

    If yes, dedicatedNodeLabel is not the way to do.

    If you cannot upgrade to ODM on k8s 22.2.0/ODM  8.11.1 to benefit  from the new nodeAffinity parameter , you can manage it with 2 ways :

    Edit your current Helm chart by adding the needed material. For example, add a "nodeAffinity" parameter below customization and add in your deployment templates like  dc-deployment.yaml , ... 
    {{- if not (empty (.Values.customization.nodeAffinity)) }}
    {{ toYaml .Values.customization.nodeAffinity | indent 14 }}
    {{- end }}

    below the section :
          affinity:
            nodeAffinity:

    or you can manage a post rendering deployment modification using a kustomize https://github.com/thomastaylor312/advanced-helm-demos/tree/master/post-render

    So, you will be able to manage it by adding :

    customization:
      nodeAffinity:
      - key: scope
         operator: In
         values:
             - odm

    Hope this helps.



     



    ------------------------------
    Mathias Mouly
    ------------------------------



  • 5.  RE: ODM 8.11 K8s Azure | ODM for production parameters | .customization.dedicatedNodeLabel

    Posted Tue April 25, 2023 12:36 PM

    Hello Mathias,

    Yes, that is what I want to do. I have edited Helm chart ODM on k8s 21.3.0/ODM 8.11.0 as you indicate, and it works.

    Another workaround if you do not want to modify the current Helm chart, is to add to the node on which you want to deploy ODM pods, a label with the same value (descriptive enough) in the <label-key>=<label-value> pair, for example odm=odm

    This also forces you to add a taint (odm=odm) to the node.


    This is so because of what the documentation says:
    https://www.ibm.com/docs/en/odm/8.11.0?topic=reference-odm-production-configuration-parameters

    dedicatedNodeLabel
    Applies a node affinity property to the ODM pods. The toleration label is also applied to pods, and restricts the pods to schedule onto nodes with matching taints. Nodes must be labeled and tainted independently of the ODM deployments. Nodes do not accept pods that do not tolerate the taints.


    Thank you so much!



    ------------------------------
    Charo Álvarez Martínez
    Automation Architect
    DECIDE
    Madrid
    ------------------------------



  • 6.  RE: ODM 8.11 K8s Azure | ODM for production parameters | .customization.dedicatedNodeLabel

    Posted Tue April 25, 2023 12:50 PM

    Concerning dedicatedNodeLabel, it will be removed from the documentation in the next release to avoid confusion.
    Thanks for the feedback, Maria.



    ------------------------------
    Mathias Mouly
    ------------------------------