7 CNCF Tools for Scheduling and Orchestration

Container managers like Kubernetes have become critical to managing large numbers of containers. By running containers in a cluster—a group of machines—a system can optimize how each application consumes memory. Automating these container management operations has become essential as the cloud-native ecosystem moves toward microservices designs and increasingly distributed computing.

Kubernetes has become the near-standard container orchestration and scheduling utility, enabling engineers to better manage their distributed nodes from one control plane. Nowadays, it is the most actively maintained orchestrator, which means much of the other tooling in this area tends to integrate with Kubernetes and extend it into unique development scenarios. For example, kube-rs makes working with Kubernetes from the Rust language easier.

The Cloud Native Computing Foundation (CNCF) has been a force for new cloud-native tools in areas like streaming, observability, container runtime, CI/CD and others. Below, we’ll examine seven projects related to scheduling and orchestration that are hosted by the CNCF. Many of these open source projects are Kubernetes-aware and help deal with concerns like multi-cluster management, multi-cloud, data-intensive workloads and other specific requirements.

1. Kubernetes

A system for automating deployment, scaling and management of containerized applications

GitHub | Website

Kubernetes, often abbreviated as K8s, is the most widely used container orchestrator. Originally designed at Google, Kubernetes excels at scheduling and scaling large-scale container workloads, optimizing where they are run and handling many other application life cycle duties. As we’ve detailed before, Kubernetes is distinct from Docker although both tools are often used simultaneously. Kubernetes was open sourced in 2014 and is now a fully-graduated CNCF project.

2. Crossplane

A universal control plane.

GitHub | Website

There are now many flavors of Kubernetes. Kubernetes may be self-managed or cloud-managed through services like EKS, AKS, GKE, ACK or PKS. There are also varying practices for multi-cluster management. Crossplane is a tool that extends the K8s API, making it easier to interface with multiple cloud providers. With Crossplane, teams can communicate through one universal API to manage multiple clusters and vendors in a customized manner. Crossplane also enables insertion of security policies and guardrails to help secure your cloud-native infrastructure. Crossplane was created by Upbound and is in incubating status within the CNCF.

3. Fluid

A cloud-native orchestration platform for elastic data abstraction and acceleration.

GitHub | Website

Nowadays, it’s common to be working with data-intensive applications for scenarios like AI/ML development. Whereas Kubernetes is a container orchestrator, Fluid is instead designed for orchestrating the data layer. Fluid is an open source, Kubernetes-native project that helps work with data and scale dataset caches on demand. Based on Alluxio, Fluid provides a runtime and additional abstractions for managing datasets, making it a prime utility for working with distributed caches. By optimizing how data is handled, Fluid can train AI/ML models much faster than other methods. At the time of writing, Fluid is a sandbox CNCF project.

4. Karmada

Multi-cloud, multi-cluster K8s orchestrator.

GitHub | Website

As previously noted, expansive cloud-native architectures may be using different flavors of Kubernetes. Karmada was built for this reality, as it is a utility that helps you run an application across various Kubernetes clusters and clouds. Using Karmada as a centralized management point could help avoid vendor lock-in and enable hybrid multi-cloud computing arrangements. Karmada functions using a REST API server that communicates with controllers that access clusters in various clouds. This process schedules clusters according to constraints and available resources. Karmada is currently a sandbox project with open governance hosted by the CNCF.

5. kube-rs

A Rust client for Kubernetes.

GitHub | Website

Similar to the Go client for Kubernetes, kube-rs provides a runtime abstraction layer and macros for Kubernetes custom resource definitions (CRDs). The project makes it easy to code applications that interact with the Kubernetes API within Rust. Kube.rs reinterprets Kubrentes-native elements like reflectors, controllers and custom resource interfaces into the Rust language. Check out the Getting Started guide to start playing around with kube-rs. At the time of writing, kube-rs is a sandbox project with CNCF.

6. Open Cluster Management

A centralized control plane for managing multiple K8s clusters.

GitHub | Website

As the number of Kubernetes clusters an organization deploys increases, it becomes harder and harder to manage them simultaneously, let alone retain visibility into their inner workings. This is compounded by teams using Kubernetes across multiple cloud vendors. The Open Cluster Management (OCM) project is an interesting open source initiative that seeks to offer centralized control over multiple Kubernetes clusters. With OCM, operators can create and delete clusters on multiple clouds from a single control plane. You can register clusters and apply standard security policies across multiple clusters, too. OCM provides clusteradm, a command line tool for multi-cluster management. At the time of writing, Open Cluster Management is a sandbox project with CNCF.

7. Volcano

A cloud-native batch system.

GitHub | Website

Volcano is an open source project that provides components for batch and elastic computing—it was created since Kubernetes doesn’t offer the sort of batch scheduling capabilities required for data-intensive workloads out-of-the-box. The tool is helpful for running big data applications in fields such as AI/ML or genomics as Kubernetes workloads. At the time of writing, Volcano is a sandbox project with the CNCF.

Final Thoughts: Open Source Scheduler Tools

Above, we’ve reviewed some emerging projects for container orchestration and scheduling under the CNCF umbrella. As you can see, the aftermath of Kubernetes ubiquity has influenced the creation of many new packages to cater to this new paradigm. Whether operators are attempting to unite disparate Kubernetes flavors, work from their language of choice or run data-heavy computations in Kubernetes clusters, the CNCF has some interesting projects to cater to these special needs.

Bill Doerrfeld

Bill Doerrfeld is a tech journalist and analyst. His beat is cloud technologies, specifically the web API economy. He began researching APIs as an Associate Editor at ProgrammableWeb, and since 2015 has been the Editor at Nordic APIs, a high-impact blog on API strategy for providers. He loves discovering new trends, interviewing key contributors, and researching new technology. He also gets out into the world to speak occasionally.

Bill Doerrfeld has 105 posts and counting. See all posts by Bill Doerrfeld