Prerequisites

MetalK8s clusters require machines running CentOS / RHEL 7.6 or higher as their operating system. These machines may be virtual or physical, with no difference in setup procedure. The number of machines to setup depends on the chosen architecture (see Choosing a Deployment Architecture).

Machines must not be managed by any configuration management system (e.g. SaltStack, Puppet).

Warning

Distribution must be, as much as possible, left intact (no tuning, tweaking, configuration nor software installation).

Proxies

For nodes operating behind a proxy, see Configuration

Linux Kernel Version

Linux Kernel shipped with latest (7.7) and previous versions of CentOS / RHEL 7 is affected by a cgroups memory leak bug.

Kernel must be at least in version 3.10.0-1062.4.1 for this bug to be fixed.

The version can be retrieved using:

uname -r

If the installed version is lower than the one above, it must be upgraded:

yum upgrade -y kernel-3.10.0-1062.4.1.el7
reboot

Provisioning

SSH

Each machine must be accessible through SSH from the host. As part of the Deployment of the Bootstrap node, a new SSH identity for the Bootstrap node will be generated and shared to other nodes in the cluster. It is also possible to do it beforehand.

Network

Each machine must be a member of both the control plane and workload plane networks, as described in Networks. However, these networks can overlap, and nodes need not have distinct IPs for each plane.

For the host to reach the cluster-provided UIs, it must be able to connect to control plane IPs of the machines.

Repositories

Each machine needs to have repositories properly configured and having access to basic repository packages (depending on the operating systems).

CentOS:

  • base

  • extras

  • updates

RHEL:

  • rhel-7-server-rpms

  • rhel-7-server-extras-rpms

  • rhel-7-server-optional-rpms

Note

For RHEL you should have a system properly registered.

Note

The repository names and configurations do not necessarily need to be the same as the official ones but all packages must be made available.

Enable an existing repository:

CentOS:

yum-config-manager --enable <repo_name>

RHEL:

subscription-manager repos --enable=<repo_name>

Add a new repository:

yum-config-manager --add-repo <repo_url>

Note

repo_url can be remote url using prefix http://, https://, ftp://, … or a local path using file://.

For more detail(s), refer to the official Red Hat documentation:

etcd

For production environments, a dedicated block device for etcd is recommended for better performance and stability. If possible, use a SSD which provides lower write latencies, with less variance than a spinning disk, thus improving the reliability of etcd.

The device must be formatted and mounted on /var/lib/etcd, on Nodes intended to bear the etcd role.

For further information on etcd hardware requirements, see the official documentation.