First off, what is containerization? Applications need to run on various platforms and work with different OSs while using their own coding languages. Containers are packages carrying the application code, its libraries, and dependencies. They are lightweight components that connect the application to the operating system so code can run in any environment.
Container orchestration tools are the control center for the scheduling, deployment, and networking of containers. The most popular are:
The main benefit of orchestration is automation. Orchestration tools reduce the complexity of managing, scaling, and monitoring containers in large numbers, accelerating the development and deployment cycles for developers and operators, increasing productivity, and minimizing human error.
The added benefit is cost reduction since it improves hardware operationality and resource usage. There is also a reduced risk of downtime thanks to automated rollbacks in case of deployment failure.
Of all of the orchestration tools available, Kubernetes is the most popular and considered the industry standard.
Kubernetes (aka "Kube" or k8s) is an open-source container orchestration platform written in Go. It was initially developed by Google in 2014 but is currently maintained by the Cloud Native Computing Foundation (CNCF).
According to surveys, Kubernetes usage share has grown, being by far the most popular of the orchestration technologies. Leading public cloud providers like Amazon Web Services (AWS), Google Cloud Platform, IBM Cloud, and Microsoft Azure include managed Kubernetes services in their packages.
The popularity of Kubernetes has risen in the last few years, partly thanks to the use of YAML. Languages like Ruby, Python, or Javascript are more complex and promote infrastructure as code; with YAML the focus is on infrastructure as data.
The basic unit of Kubernetes is Pods. A pod is one or a group of containers with shared storage and network resource.
This shift allows for better scalability, security, control, and improved integration with cloud providers. Kubernetes' own fast development cycle, with new versions coming out every couple of months, promotes innovation, adapting quickly to developers' needs, thanks to a strong community effort, with a large number of groups invested in the evolution of the Kubernetes' project.
If you're interested in how Kubernetes works and how it compares to other containerization technologies, we recommend reading these articles from our blog:
Nomad is HashiCorps' answer to developers looking for a powerful yet flexible platform for application deployment or container orchestration.
Heralded as simple to run and maintain, Nomad is cloud-agnostic and designed to natively handle multi-datacenter and multi-region deployments with a high scalability potential. It is referred to as "Kubernetes without the complexity," but it's making a name for itself on its own merit.
Compared to other orchestration tools, Nomad is very easy to install since it's available as a precompiled binary, ready to work from a local machine. It runs any type of application in all sorts of environments, using common task drivers as plugins, like Containerd, Windows IIS, Firecracker, Podman, Docker, to name a few, and doesn't rely on any external services for storage or coordination.
Each installation can be tailored to the project's needs with plugins for specific functions. Nomad's Integration Program accepts plugins coded in Go, primarily.
Nomad can work as a traditional container orchestrator but also manage non-containerized applications, which is one of its strongest appeals for developers. Application, node, and driver failures are handled automatically, keeping each job's full definitions and deployment history for easy rollback and comparison. The smallest units of deployment in Nomad are called “Tasks” and they are the equivalent to “Pods” in Kubernetes.
But the strongest selling point of Nomad's ability to make the most out of hardware, improving performance and scalability.
Nomad is open source, with an enterprise version, and was adopted by Trivago, Pandora, Target, eBay, and Roblox. With a flourishing community of developers behind it, Nomad is becoming a serious alternative to the established orchestrators.
The main difference between Nomad and Kubernetes is that Nomad is more versatile and lightweight. Nomad can work just as a simple task scheduler or take on heavier orchestration roles according to the project specifications. Nomad is part of a suite composed of complementary tools produced by HashiCorp:
Kubernetes comes as a full-featured platform, with all the components included. Nomad leaves out most of those components that can be added later if necessary, minimizing the need for external dependencies.
In the last few years, Kubernetes became the synonym for container orchestration. According to a 2022 Red Hat survey, 85% of IT leaders agree that Kubernetes is “important”, “very important” or “extremely important” to cloud-native application strategies. Nomad is still amassing popularity, but it has been gaining traction among developers and companies.
When it comes to container orchestration, it's not about the number of users but how much traffic these platforms deal with. Kubernetes is ever-present in most of today's digital communications. Still, Nomad is part of Cloudflare's development environment, a company responsible for routing 10% of the world's internet traffic and a cornerstone of Roblox's and Pandora's scaling. It may not be as commonly used as Kubernetes, but it already has a tremendous influence.
Nomad is lightweight and easy to install. It comes as a simple binary to be deployed quickly in a local development machine or cloud environment, with the same consistency and functionality.
Kubernetes takes more time and resources to deploy, and the installation process is more complex. There are other lighter Kubernetes implementations that cover only a few of the full features. These are used for rapid development and testing, but they do not translate well into the production stage since they are prone to configuration inconsistencies.
Kubernetes (as of publishing date) claims to support clusters up to 5,000 nodes, with 300,000 total containers, and no more than 150,000 pods.
Nomad showed it could scale to cluster sizes above 10,000 nodes.
In Kubernetes, pods communicate via a peer-to-peer network. This networking model needs two CIDRs (Classless Inter-Domain Routers): one for the Node IP addressing and the other for services.
In Nomad, each task gets an IP by default. The respective ports then can be accessed directly or via sidecar proxies, using host networking, dynamic or static port forwarding with the assistance of the Consul component.
Kubernetes demands more hardware and more staff, being used for high profile, long-term projects, with a bigger investment, in public cloud environments like Google Cloud Platform, Azure, or AWS.
Nomad is suited for smaller teams, with limited capacity for orchestration purposes, with shorter development deadlines, working on hybrid or on-premises environments.
Kubernetes uses YAML or JSON to define and deploy applications. This is an example of Job config using YAML:
Nomad uses the Hashicorp Configuration Language (HCL). Its main purpose is to define jobs, and making the definition of builds more flexible and convenient.
HCL is both a syntax and an API designed by Hashicorp to build structured configuration formats. It's a compromise between serialization formats like JSON and configuration formats built around languages like Ruby. It is easier to read and write by humans - just like YAML. Here’s a Job configuration code example for Nomad in HCL:
A load balancer distributes incoming traffic from the internet to the front-end applications responsible for handling requests.
The most popular solution in Kubernetes for load balancing is Ingress, a specialized Kubernetes controller (all too similar to a pod). Ingress includes a set of rules to manage traffic and a daemon to apply them. These rules can be adapted for more advanced needs.
Nomad has a functionality similar to the Kubernetes' Ingress controller, which can also adapt easily to changes in configuration and scale.
Nomad works with Docker just like Kubernetes does and runs non-containerized workloads (Windows, Java).
Both have attractive, functional dashboards, providing a clear, straightforward management experience.
Kubernetes is a powerful collection of components that work together, integrated into one core unit. It is designed to deploy, manage and scale application containers across clusters of hosts, just like an operating system for cloud-native applications.
Nomad starts as a cluster manager and task scheduler, but it can be connected to other tools like Consul to expand its capabilities. Its flexibility to adapt to different roles makes Nomad very appealing to medium-sized companies with less hardware and staff resources. It's easier to start with, easier to maintain, but lacks community support.
But you don't even have to choose between Kubernetes and Nomad.
Both platforms can work together, complementing each other: Kubernetes is used by global companies and is offered as a service by Google Cloud Platform, Azure, and AWS, the three most prominent cloud providers, because it is recognized as a powerful container orchestration tool with cutting edge features. But Nomad's agility makes it perfect for maintenance and core scheduling purposes.
Here's a head to head comparison:
The containerization arena already had many competing (and, sometimes, cooperating) options catering to different goals and needs. Now we have one more. It doesn't seem Nomad will take over the ruling of Kubernetes any time soon, but it's lining up as a strong player.
Nomad can be the entry point to the world of container orchestration for many developers and companies who need a lightweight, simple, and easily adaptable solution to face different scenarios that do not require a heavyweight like Kubernetes, to grow at their own pace.
Content writer and digital media producer with an interest in the symbiotic relationship between tech and society. Books, music, and guitars are a constant.
People who read this post, also found these interesting: