Master Cluster
The Master Cluster hosts the KKP components and might also act as a seed cluster and host the master components of user clusters (see Architecture). Therefore, it should run in a highly-available setup with at least 3 master nodes and 3 worker nodes.
Minimal Requirements:
- Six or more machines running one of:
- Ubuntu 20.04+
- Debian 10
- RHEL 7
- Flatcar
- 4 GB or more of RAM per machine (any less will leave little room for your apps)
- 2 CPUs or more
User Cluster
The User Cluster is a Kubernetes cluster created and managed by KKP. The exact requirements may depend on the type of workloads that will be running in the user cluster.
Minimal Requirements:
- One or more machines running one of:
- Ubuntu 20.04+
- Debian 10
- RHEL 7
- Flatcar
- 2 GB or more of RAM per machine (any less will leave little room for your apps)
- 2 CPUs or more
- Full network connectivity between all machines in the cluster (public or private network is fine)
- Unique hostname, MAC address, and product_uuid for every node. See more details in the next topic.
- Certain ports are open on your machines. See below for more details.
- Swap disabled. You MUST disable swap in order for the kubelet to work properly.
Verify Node Uniqueness
You will need to verify that MAC address and product_uuid
are unique on every node. This should usually be the case but might not be, especially for on-premise providers.
- You can get the MAC address of the network interfaces using the command
ip link
or ifconfig -a
- The product_uuid can be checked by using the command
sudo cat /sys/class/dmi/id/product_uuid
It is very likely that hardware devices will have unique addresses, although some virtual machines may have identical values. Kubernetes uses these values to uniquely identify the nodes in the cluster. If these values are not unique to each node, the installation process may fail.
Check Network Adapters
If you have more than one network adapter, and your Kubernetes components are not reachable on the default route, we recommend you add IP route(s) so Kubernetes cluster addresses go via the appropriate adapter.
Check Required Ports
Please ensure that all nodes in a user cluster can communicate without restriction to ensure functionality of CNI/CSI and Kubernetes itself.
In addition, user cluster nodes must be able to connect to the Seed cluster’s nodeport-proxy. This depends on the [expose strategy](/kubermatic/main/tutorials-howtos/networking/expose-strategies/.
It is recommended to make yourself familiar with the concept of networking in KKP.
Source | Component | Destination | Expose Strategy | Ports | Purpose |
---|
KKP Users | / | Master Ingress Controller | Any | 443* | Access to KKP Dashboard |
Master Cluster nodes | KKP Operator | Seed cluster Kubernetes API | Any | 6443* | Operator access |
Master Cluster nodes | Kubermatic API | Seed cluster Kubernetes API | Any | 6443* | Operator access |
Master cluster nodes | Kubermatic API | Seed cluster nodeport-proxy | Tunneling | 6443 | Access to User Cluster API Endpoints |
Master cluster nodes | Kubermatic API | Seed cluster nodeport-proxy | NodePort | 30000-32767** | Access to User Cluster API Endpoints |
Master cluster nodes | Kubermatic API | Seed cluster nodeport-proxy | LoadBalancer | 30000-32767** | Access to User Cluster API Endpoints |
Seed cluster nodes | Seed controller manager | Cloud Provider API | Any | provider specific | Cloud provider api access |
User cluster nodes | Kubelet/ Konnectivity/ in-cluster api | Seed cluster nodeport-proxy | Tunneling | 6443, 8088 | Access to User Cluster API Endpoints and Konnectivity |
User cluster nodes | Kubelet/ Konnectivity/ in-cluster api | Seed cluster nodeport-proxy | NodePort | 30000-32767** | Access to User Cluster API Endpoints and Konnectivity |
User cluster nodes | Kubelet/ Konnectivity/ in-cluster api | Seed cluster nodeport-proxy | LoadBalancer | 30000-32767** | Access to User Cluster API Endpoints and Konnectivity |
KKP Users | / | Seed cluster nodeport-proxy | Tunneling | 6443 | Access to User Cluster API Endpoints |
KKP Users | / | Seed cluster nodeport-proxy | NodePort | 30000-32767** | Access to User Cluster API Endpoints |
KKP Users | / | Seed cluster nodeport-proxy | LoadBalancer | 30000-32767** | Access to User Cluster API Endpoints |
Any port numbers marked with * are overridable, so you will need to ensure any custom ports you provide are also open.
** Default port range for NodePort Services.
All ports listed are using TCP.