Setting up a Kubernetes solution with Supermicro equipment
Supermicro is a leading manufacturer of servers and storage systems ideal for building a robust Kubernetes infrastructure. They have worked with partners such as Canonical and SUSE to offer validated Kubernetes solutions.
To configure a Kubernetes solution with Supermicro equipment, we must consider several key components:
1. Compute Nodes (Worker Nodes):
These servers will run your Kubernetes pods and workloads. Supermicro offers a wide range of rack and multi-node servers that are perfect for this. Some popular options include:
- Supermicro Twin Servers (BigTwin, TwinPro, etc.): These multi-node systems in a single chassis are ideal for Kubernetes, offering high compute density, energy efficiency, and scalability. They allow for multiple compute nodes in a small footprint.
- Rackmount Servers (1U, 2U, etc.): More traditional one- or two-socket servers, with multiple PCIe slots for high-speed network cards and GPUs if your workloads require it (machine learning, inference, etc.).
Considerations for Compute Nodes:
- Processors: Intel Xeon Scalable or AMD EPYC. The choice will depend on the type of workloads you'll be running. For CPU-intensive workloads, processors with many cores are key.
- RAM: Enough RAM for your applications. Kubernetes is efficient, but containerized applications can consume a lot of memory. A minimum of 64GB per node is recommended, but this can vary greatly.
- Local Storage (for OS and cache): NVMe SSD for fast OS boot and container image storage.
- Network Interface Cards (NICs): High-speed networks (10GbE, 25GbE, or even 100GbE) for inter-pod and storage communication. It's recommended to have at least two NICs per node for redundancy and performance.
2. Control Plane Nodes (Master Nodes):
These servers run the core Kubernetes components (kube-apiserver, kube-scheduler, kube-controller-manager, etc.). For high availability, it's recommended to have at least three control plane nodes in a production cluster.
- The hardware requirements for control plane nodes are typically slightly lower in terms of CPU/RAM than compute nodes, unless your cluster is extremely large.
- Storage for etcd (the Kubernetes key-value database) is critical and should be NVMe SSD for optimal performance.
3. Persistent Storage:
Kubernetes requires persistent storage for stateful applications. Supermicro offers several storage solutions that can be integrated with Kubernetes:
- All-Flash NVMe Storage Systems: For workloads requiring low latency and high performance, Supermicro offers all-flash solutions with high NVMe density.
- Software-Defined Storage (SDS) Systems: Supermicro is a partner of several SDS solutions such as Cloudian HyperStore (S3-compatible object storage), Commvault HyperScale X, and Ceph-based solutions. These solutions leverage Supermicro storage servers and allow you to scale storage independently.
- JBODs (Just a Bunch Of Disks): To add additional storage capacity to your servers, managed by an SDS solution or a controller.
- RAID Controllers and HBA Cards: To configure the internal storage of servers.
Storage Considerations:
- Storage Classes: In Kubernetes, you will define Storage Classes that map to your storage provisioners (e.g., for iSCSI, NFS, Ceph, etc.).
- Performance: Determine whether you need SSD-based storage (for high IOPS) or HDD-based storage (for massive capacity). Many Kubernetes environments benefit from a combination.
- Durability and Backup: Plan redundancy and backup strategies for your persistent data.
4. Networks:
Networking is critical to performance and connectivity in Kubernetes.
- Supermicro Network Switches: Supermicro offers a variety of Ethernet switches (1GbE, 10GbE, 25GbE, 100GbE) that can form the backbone of your cluster.
- Network Configuration: A flat network is recommended for communication between pods and services. Consider implementing a CNI (Container Network Interface) such as Calico, Flannel, Cilium, etc., for pod network connectivity.
- Load Balancers: To expose your services to external users. These can be hardware (such as a Supermicro L4/L7 load balancer, if applicable) or software (such as MetalLB for bare-metal environments).
5. Management:
- SuperCloud Composer (SCC): Supermicro offers SCC, a platform that can help you with automated provisioning, management, and orchestration of your infrastructure. This can be very useful for large-scale Kubernetes deployments.
- Kubernetes orchestration software: You can choose an upstream Kubernetes distribution (Vanilla Kubernetes), or enterprise solutions such as Rancher, OpenShift (Red Hat OpenShift on Supermicro is a validated solution), Canonical Charmed Kubernetes, or SUSE CaaS Platform (they also have validated solutions with Supermicro).
General steps for configuration:
- Architecture Design: Define the number of control nodes, compute nodes, storage and network requirements based on your expected workloads.
- Supermicro Hardware Selection: Choose the Supermicro server models (e.g., BigTwin, rack servers) and storage systems (NVMe All-Flash, SDS) that best fit your design.
- Acquisition: Contact Super Latam , the largest authorized distributor in Chile for Supermicro, to obtain a quote and advice on the hardware.
- Operating System Installation: Install a Kubernetes-compatible operating system on all nodes (e.g., Ubuntu Server, CentOS, RHEL).
- Network Configuration: Configure network interfaces, VLANs, and switch access.
- Deploy Kubernetes: Use a tool like kubeadm, rke, kops, or your chosen Kubernetes distribution to initialize your cluster.
- Persistent Storage Configuration: Integrate your storage solution (e.g. CSI driver for a storage array, Ceph configuration).
- Testing and Optimization: Deploy test applications, monitor performance, and adjust settings as needed.
Example of a basic configuration (for reference):
- 3x Control Nodes: Supermicro 1U single-processor servers (e.g. based on Xeon E3 or E-2300 series for a small to medium cluster), with 32-64GB RAM and NVMe SSDs for the OS and etcd.
- X Compute Nodes (Worker Nodes):
- High-density option: Supermicro BigTwin (2U with 4 nodes) or TwinPro (1U/2U with 2 or 4 nodes) servers, each node with 2x Intel Xeon Scalable or AMD EPYC CPUs, 128GB+ RAM, 1-2 NVMe SSDs for local cache and OS.
- Traditional Option: Supermicro 2U dual-processor servers, with 2x Intel Xeon Scalable or AMD EPYC CPUs, 128GB+ RAM, and space for both NVMe and SATA/SAS drives.
- Storage:
- For performance: A Supermicro All-Flash NVMe system (e.g. SSG-121E-NES24R or similar) with a CSI driver for Kubernetes.
- For capacity: A top-loading Supermicro SuperStorage (e.g. 4U with 60/90 bays) running an SDS like Ceph or Rook.
- Networks: Supermicro 10GbE or 25GbE switches for server and switch interconnection.
Remember that Supermicro offers validated "Total Solutions" with Canonical Kubernetes and SUSE CaaS Platform, which can greatly simplify the implementation process. I recommend exploring the solutions and architecture references available on the Supermicro website for detailed configurations specific to your use case.