System requirements#
Before you start cluster deployment, verify that your system meets the following minimum hardware and software requirements.
Hardware requirements#
Although MKE 4 uses k0s as the underlying Kubernetes distribution, the hardware requirements for MKE 4 differ from k0s due to the higher resource requirements of various enterprise-grade components the software uses.
To ensure stability, optimal performance, and reliable upgrades, Mirantis performed extensive internal testing to determine the optimum hardware configuration for MKE k:
Upgrade from MKE 3
Note
Starting with MKE 4.2.0, only MKE 3.9.x clusters can be upgraded to MKE 4.2.0 and later. For more information, refer to Upgrade from MKE 3.7, 3.8, or 3.9.
- Manager nodes: 16 GB RAM, 4 vCPUs
- Worker nodes: 8 GB RAM 2 vCPUs
Note
In comparison, testing showed consistently degraded network performance on MKE 3 clusters configured with fewer vCPUs. Specifically:
- Manager nodes: 16 GB RAM, 2 vCPUs
- Worker nodes: 8 GB RAM, 2 vCPUs
Fresh installation
- Manager nodes: 16 GB RAM, 4 vCPUs
- Worker nodes: 8 GB RAM 2 vCPUs
Software requirements#
-
Operating systems:
Important
Starting with MKE 4.2.0, all cluster nodes must run cgroups v2.
- Ubuntu Linux: 24.04, 22.04
- Red Hat Enterprise Linux (RHEL): 9.6, 8.10
- Rocky Linux 9.4
-
Windows Server 2022 (worker nodes only)
Note
MKE 4 supports Windows for worker nodes only; manager/control-plane nodes must run a supported Linux distribution.
-
Architecture:
x86_64
Load balancer requirements#
The load balancer can be implemented in many different ways. For example, you can use HAProxy, NGINX, or the load balancer of your cloud provider.
Built-in load balancer
MKE 4 offers a built-in L2 load balancer, which you can use if you are not using a public cloud and have not already deployed a different load balancer. For more information, refer to Control Plane Load Balancer.
To ensure the MKE 4 Dashboard functions properly, MKE 4 requires a TCP load balancer. This load balancer acts as a single point of contact to access the controllers. With the default MKE 4 configuration, the load balancer must allow and route traffic to each controller through the following ports:
| Listen port | Target port | Purpose | Configurable |
|---|---|---|---|
| 6443 | 6443 | Kubernetes API | |
| 9443 | 9443 | Controller join API | |
| 443 | 33001 | Gateway API |
You can configure the listen port of the Ingress Controller to be different from
the default port 443. However, if you change the listen port, you must append
the new port number to the external address in the configuration file. For example,
if you set the listen port to be the same as the target port, 33001, the configuration
should look as follows:
apiServer:
externalAddress: "mke.example.com:33001"
Important
The specified external address is automatically added to the SANs of the cluster certificate. If the external address is not set, the first controller node of the cluster is used, and anyone who visits their cluster through the address when the field is not set will be denied access.
The target port must match the HTTPS port of the Gateway API controller, which
is 33001 by default for freshly installed clusters, though you can adjust it
as necessary and may need to specify it explicitly for upgrades. Refer to the
configuration details for nodePorts in the Gateway API controller
configuration.