Rhizeption is an innovative project that implements Hosted Nodes for Kubernetes clusters, providing a lightweight, efficient, and highly scalable solution for container orchestration.
Rhizeption extends the Kubernetes ecosystem by introducing the concept of Hosted Nodes. These nodes are containerized Kubernetes nodes that run within a host Kubernetes cluster, offering a nested and interconnected structure that maximizes resource utilization and operational flexibility.
The name "Rhizeption" is a clever combination of two concepts that perfectly encapsulate the essence of our project:
- Rhizome: In botany, a rhizome is a horizontal underground plant stem capable of producing the shoot and root systems of a new plant. Rhizomes are characterized by their ability to spread laterally and form interconnected networks. This reflects our project's nature of creating interconnected, adaptable, and scalable node structures.
- Inception: This part of the name alludes to the concept of nested structures or "a dream within a dream," as popularized by the movie "Inception." In our context, it represents the idea of Kubernetes nodes running within a Kubernetes cluster - a nested, inception-like architecture.
The fusion of these two concepts into "Rhizeption" embodies the core principles of our project:
- Interconnectedness and lateral growth (like a rhizome)
- Nested, inception-like structures (Kubernetes within Kubernetes)
- Adaptability and scalability
- Innovative approach to traditional concepts
By choosing this name, we aim to convey the unique and powerful nature of our Hosted Nodes solution, emphasizing its ability to create flexible, interconnected, and nested Kubernetes environments.
Hosted Nodes represent a paradigm shift in how we think about and implement Kubernetes clusters. Here's a detailed look at what Hosted Nodes are and how they work:
Hosted Nodes are Kubernetes nodes that run as containers within a host Kubernetes cluster. This nested structure allows for a more efficient use of resources and provides greater flexibility in cluster management.
-
Resource Efficiency: Traditional Kubernetes nodes typically run on virtual machines or bare metal servers. Hosted Nodes, being containers themselves, have significantly lower overhead, allowing for higher density and better resource utilization.
-
Rapid Provisioning: Hosted Nodes can be created and destroyed much faster than traditional VMs, enabling quicker scaling and more agile cluster management.
-
Nested Architecture: Hosted Nodes create a cluster-within-a-cluster structure, allowing for innovative approaches to multi-tenancy, isolation, and resource partitioning.
-
Simplified Management: By leveraging container orchestration for node management, Hosted Nodes can be managed using familiar Kubernetes primitives and tools.
Rhizeption implements Hosted Nodes using the following components:
-
HnCluster: A custom resource that defines the overall configuration for a cluster of Hosted Nodes.
-
HnMachine: A custom resource representing individual Hosted Nodes. Each HnMachine corresponds to a Pod in the host cluster, running a containerized Kubernetes node.
-
Custom Controllers: Rhizeption includes controllers that manage the lifecycle of HnClusters and HnMachines, ensuring they stay in sync with the desired state.
-
Containerd: Used as the container runtime within Hosted Nodes, providing a lightweight and efficient container execution environment.
-
Networking: Implements advanced networking solutions to ensure proper communication between Hosted Nodes, as well as between Hosted Nodes and the host cluster.
Hosted Nodes are particularly useful in scenarios such as:
-
Development and Testing: Quickly spin up and tear down full Kubernetes environments for testing and development purposes.
-
Multi-Tenancy: Create isolated Kubernetes environments for different teams or customers within a single host cluster.
-
Edge Computing: Deploy lightweight Kubernetes nodes in resource-constrained edge environments.
-
Cost Optimization: Maximize resource utilization in cloud environments by running multiple Kubernetes clusters on a single set of VMs.
-
Learning and Education: Provide individual Kubernetes environments to learners without the need for separate VMs or physical hardware.
- Lightweight Nodes: Rhizeption nodes are containerized, resulting in reduced resource overhead compared to traditional VMs.
- Nested Architecture: Supports running Kubernetes nodes within a Kubernetes cluster, enabling complex and flexible deployments.
- Standard Kubernetes Compatibility: Fully compatible with standard Kubernetes control planes and tools.
- Efficient Resource Utilization: Maximizes cluster resource usage through containerized node management.
- Rapid Scaling: Quickly scale your cluster up or down by adding or removing containerized nodes.
- Flexible Networking: Implements advanced networking capabilities to ensure smooth communication between hosted nodes and the host cluster.
Rhizeption consists of two main custom resources:
-
HnCluster: Manages the overall hosted node cluster configuration and lifecycle. It defines cluster-wide settings such as networking configuration and control plane endpoints.
-
HnMachine: Represents individual hosted nodes within the cluster. Each HnMachine is realized as a Pod running a containerized Kubernetes node.
These custom resources extend the Cluster API, allowing seamless integration with existing Kubernetes workflows and tools.
The project uses containerd as the container runtime and implements custom controllers to manage the lifecycle of hosted nodes. The controllers ensure that the actual state of the Hosted Nodes cluster matches the desired state defined in the HnCluster and HnMachine resources.
- Kubernetes cluster (v1.28.3 or later)
- kubectl configured to communicate with your cluster
- Cluster API components installed on your cluster
-
Clone the Rhizeption repository:
git clone https://github.com/your-org/rhizeption.git cd rhizeption
-
Install the Custom Resource Definitions (CRDs):
kubectl apply -f config/crd/bases
-
Deploy the Rhizeption controllers:
kubectl apply -f config/manager/manager.yaml
-
Create your first HnCluster:
kubectl apply -f config/samples/hn_v1alpha1_hncluster.yaml
-
Verify the installation:
kubectl get hnclusters kubectl get hnmachines
For more detailed instructions and advanced configurations, please refer to our documentation.
We welcome contributions to Rhizeption! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
Rhizeption is released under the Apache 2.0 License.