Setting up a Kubernetes cluster on Ubuntu provides a reliable foundation for managing containerized applications at scale. This guide walks through the essential steps to deploy a production-ready environment using the latest stable tools.
Preparing the Infrastructure
Before installing Kubernetes, ensure each node runs Ubuntu 22.04 LTS with consistent hardware specifications and static IP addresses. Disable swap space to prevent interference with kubelet performance and verify hostname resolution across all machines.
System Configuration and Dependencies
Apply kernel updates and install required packages including curl, apt-transport-https, and ca-certificates. Configure sysctl settings to allow bridge traffic and enable IP forwarding for proper pod networking.
Installing Container Runtime and kubeadm
Containerd serves as the recommended runtime, installed via the official repository and configured to use systemd cgroup driver. Initialize the Kubernetes control plane with kubeadm, specifying the correct pod network CIDR during the configuration phase.
Joining Worker Nodes to the Cluster
Use the kubeadm join command generated during control plane initialization to register worker nodes securely. Validate token expiration settings and ensure firewall rules allow necessary ports for communication between components.
Configuring Pod Networking
Deploy a CNI solution such as Calico or Flannel immediately after cluster initialization to enable inter-pod communication. Confirm that all nodes transition to Ready status and that core system pods are running without errors.
Securing API Access and Managing Add-ons
Restrict direct access to the Kubernetes API server using firewall policies and implement Role-Based Access Control for different user accounts. Install CoreDNS and Metrics Server to support service discovery and resource monitoring capabilities.
Validating Cluster Health
Run diagnostic commands to review node status, event logs, and component health checks. Address any scheduling restrictions or network policy conflicts before deploying production workloads.
Ongoing Maintenance and Upgrades
Plan regular updates for Kubernetes versions and underlying infrastructure components. Monitor disk usage, certificate expiration dates, and etcd database integrity to ensure long-term stability.