/
BuildOn pod NodeAffinity

BuildOn pod NodeAffinity

Create label to run the buildon pod in a particular slave node using node affinity.

To get the slavenodename: kubectl get nodes

To create label for the k8s cluster node: kubectl label nodes <slavenodename> labelnode1=nodelabel

To Show label: kubectl get nodes --show-labels | grep slavelabel

To delete label: kubectl label nodes <slavenodename> labelnode1-


Example command using Node Affinity for ubuntu image:

kubectl run -i --tty ubuntu --rm --image=ubuntu --restart=Never --overrides='

{

   "apiVersion": "v1",

   "kind": "Pod",

   "metadata": {

      "name": "ubuntupoc"

   },

   "spec": {

      "affinity": {

         "nodeAffinity": {

            "requiredDuringSchedulingIgnoredDuringExecution": {

               "nodeSelectorTerms": [

                  {

                     "matchExpressions": [

                        {

                           "key": "labelnode1",

                           "operator": "In",

                           "values": [

                              "nodelabel"

                           ]

                        }

                     ]

                  }

               ]

            }

         }

      }

   }

}

'

===========================================================================

Enable Node Affinity for buildon pod. Change buildon.py "kubectl run" step as shown below.

===========================================================================

As-Is:

subprocess.Popen(['kubectl run '+ self.uid +' -i --tty --rm --restart=Never --image='+imagename+ ' --env="commitID='+self.uid+'" --env="branchName='+self.tuid+'" --env="gitURL='+self.httpurl+'" --env="KUBEMASTER='+self.host_ip+'" --env="UPLOADPORT='+self.upload_port+'" --env="scmServiceAccount='+self.scmServiceAccount+'"'], shell=True)

To Be:

subprocess.Popen(['kubectl run '+ self.uid +' -i --tty --rm --restart=Never --image='+imagename+ ' --overrides='{ "apiVersion": "v1","kind":"Pod", "metadata": {"name": "buildonslave"},"spec": {"affinity": {"nodeAffinity": {"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms": [ { "matchExpressions": [ { "key": "labelnode1", "operator": "In", "values": [ "nodelabel"]}]}]}}}}}' --env="commitID='+self.uid+'" --env="branchName='+self.tuid+'" --env="gitURL='+self.httpurl+'" --env="KUBEMASTER='+self.host_ip+'" --env="UPLOADPORT='+self.upload_port+'" --env="scmServiceAccount='+self.scmServiceAccount+'"'], shell=True)

Reference: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

Related content

Kubernets Issues
Kubernets Issues
More like this
Kube Pods stay in the terminating state
Kube Pods stay in the terminating state
More like this
Kubernetes Pod status Pending
Kubernetes Pod status Pending
More like this
Unable to list Kube related resources
Unable to list Kube related resources
More like this
BuildOn UI "Individual Build Report"- Status "Initiated"
BuildOn UI "Individual Build Report"- Status "Initiated"
More like this
Knowledge Base
Knowledge Base
More like this