Controller
Jenkins Controller is the primary controlling system and heart for a Jenkins instance. The controller allows managing complete configuration, plugins and jobs. It is not recommended to run heavyweight tasks on Jenkins controller. Also running jobs on the master has to access to all controllers data, configuration, operation, which can pose a huge security risk especially with respect to secrets stored as configuration.
Node
Node is a generic term that is used in Jenkins 2.0 to mean any system that can run Jenkins jobs. This covers both controllers and agents and is sometimes used in place of those terms. Furthermore, a node might be a container, such as one for Docker.
the controller node is always present in any Jenkins installation, but for the reasons already mentioned above, it is not recommended to run jobs on the controller node.
Agent
An agent is the same as slave referred in earlier versions of Jenkins. This is also traditionally referred to as non-controller system with any type of Guest operating system(Linux, OSX, Windows etc.,). The idea of evolution of node is that the controller handles the administration part of the Jenkins instance whereas nodes execute pipelines workloads where the Jobs actually runs. This enables the flexibility of distributing the workload to different agents to do different builds for different OS flavours. It allows providers the ability to run parallel testing concurrently. To avoid security concerns, typically only lightweight jar with limited access to resources is installed to handle the running jobs and talk to the master predominantly using JNLP or Web socket protocols. Agents can also be connected to Controller using ssh protocol.
Executors
An Executor is just a slot in which to run a job on an agent/node. An agent can have zero or more executors. The number of executors per Agent defines how many concurrent jobs can be run to that agent. In Nextgen world of auto-scalable Jenkins agents concurrency as no of agents with one executor active at a point of time. When a controller funnels jobs to a particular agent. There must be an available executor or available agent with at least one executor is available in order for the job to be processed immediately. Otherwise, the jobs will wait until the executor becomes available. The number of executors and other agent-specific parameters like the workspace, environment variables can be configured through the Jenkins controller console.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article