Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nodegroup configuration #59

Closed
juldrixx opened this issue Mar 24, 2022 · 4 comments
Closed

nodegroup configuration #59

juldrixx opened this issue Mar 24, 2022 · 4 comments

Comments

@juldrixx
Copy link
Contributor

From nifikop created by yossisht9876: Orange-OpenSource/nifikop#165

hey all,

i have a problem configure toleration to the nifi-cluster pods.

"error: error validating "nifi-cluster.yaml": error validating data: ValidationError(NifiCluster.spec): unknown field "tolerations" in com.orange.nifi.v1alpha1.NifiCluster.spec; if you choose to ignore these errors, turn validation off with --validate=false"

its works for the zookeeper setup and for the helm nifikop chart.

but i didnt find a way to set toleration or Nodeselector to the nifi-cluster.yaml

here is my conf:

kind: NifiCluster
metadata:
  name: nificluster
spec:
  service:
    headlessEnabled: true
  zkAddress: "zookeeper:2181"
  zkPath: "/nifi"
  clusterImage: "apache/nifi:1.13.2"
  oneNifiNodePerNode: false
  managedAdminUsers:
    -  identity: "nidddha.com"
       name: "ndd.s"
    -  identity: "yodddusddha.dd"
       name: "yddi.s"
  propagateLabels: true
  nifiClusterTaskSpec:
    retryDurationMinutes: 10
  readOnlyConfig:
    logbackConfig:
      # logback.xml configuration that will replace the one produced based on template
      replaceConfigMap:
        # The key of the value,in data content, that we want use.
        data: logback.xml
        # Name of the configmap that we want to refer.
        name: nifi-configs
        # Namespace where is located the secret that we want to refer.
        namespace: nifi
    nifiProperties:
      webProxyHosts:
        - nifi.dddv.ludddsha.co
      # Additionnals nifi.properties configuration that will override the one produced based
      # on template and configurations.
      overrideConfigs: |
        xxxxxxxxxxxx
  nodeConfigGroups:
    default_group:
      serviceAccountName: "default"
      runAsUser: 1000
      fsGroup: 1000
      isNode: true
      storageConfigs:
        - mountPath: "/opt/nifi/nifi-current/logs"
          name: logs
          pvcSpec:
            accessModes:
              - ReadWriteOnce
            storageClassName: "gp2"
            resources:
              requests:
                storage: 20Gi
        - mountPath: "/opt/nifi/data"
          name: data
          pvcSpec:
            accessModes:
              - ReadWriteOnce
            storageClassName: "gp2"
            resources:
              requests:
                storage: 50Gi
        - mountPath: "/opt/nifi/flowfile_repository"
          name: flowfile-repository
          pvcSpec:
            accessModes:
              - ReadWriteOnce
            storageClassName: "gp2"
            resources:
              requests:
                storage: 50Gi
        - mountPath: "/opt/nifi/nifi-current/conf"
          name: conf
          pvcSpec:
            accessModes:
              - ReadWriteOnce
            storageClassName: "gp2"
            resources:
              requests:
                storage: 10Gi
        - mountPath: "/opt/nifi/content_repository"
          name: content-repository
          pvcSpec:
            accessModes:
              - ReadWriteOnce
            storageClassName: "gp2"
            resources:
              requests:
                storage: 50Gi
        - mountPath: "/opt/nifi/provenance_repository"
          name: provenance-repository
          pvcSpec:
            accessModes:
              - ReadWriteOnce
            storageClassName: "gp2"
            resources:
              requests:
                storage: 50Gi
      resourcesRequirements:
        limits:
          cpu: "2"
          memory: 2Gi
        requests:
          cpu: "1"
          memory: 1Gi
  nodes:
    - id: 0
      nodeConfigGroup: "default_group"
    - id: 1
      nodeConfigGroup: "default_group"
    - id: 2
      nodeConfigGroup: "default_group"
  listenersConfig:
    internalListeners:
      - type: "https"
        name: "https"
        containerPort: 8443
      - type: "cluster"
        name: "cluster"
        containerPort: 6007
      - type: "s2s"
        name: "s2s"
        containerPort: 10000
      - type: "prometheus"
        name: "prometheus"
        containerPort: 9090
    sslSecrets:
      tlsSecretName: "nifi-sdds"
      create: true
  externalServices:
    - name: "nifi-clds"
      spec:
        type: ClusterIP
        portConfigs:
          - port: 8443
            internalListenerName: "https"



trying to add one of the 2:

#  nodeSelector:
#    nodegroup: nifi

#  tolerations:
#    -   key: "nifi-dedicated"
#        operator: "Equal"
#        value: "on_demand"
#        effect: "NoSchedule"


any help ? thanks @erdrix 
@juldrixx
Copy link
Contributor Author

thanks @michael81877 works like a charm

@juldrixx
Copy link
Contributor Author

If you want to pin the NiFi pods to dedicated nodes which you've tainted, you must specify both a nodeSelector/nodeAffinity and the toleration. Specifying only the tolerations just tells k8s that it is allowed to schedule the pods on nodes which have a particular taint, but it won't necessarily.

@juldrixx
Copy link
Contributor Author

thanks i figure it out but i have another problem
for some reason only the master pod scheduled to the dedicated node-group but the 2 other workers pods aren't scheduled in the node group even when they have the toleration configured.

is it need to be like that ? @michael81877

@juldrixx
Copy link
Contributor Author

tolerations go under a specific nodeConfigGroup. So if you're using default_group for each of your nodes, it'd look like this:

spec:
  nodeConfigGroups:
    default_group:
      nodeConfigGroups:
        default_group:
          tolerations:
            - key: taint.key
              operator: Equal
              value: "true"
              effect: "NoSchedule"

nodeSelector goes in the same spot.

docs: https://orange-opensource.github.io/nifikop/docs/5_references/1_nifi_cluster/3_node_config

@erdrix erdrix closed this as completed Aug 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants