Installing kubeadm [page]deterministic
<img src="/images/kubeadm-stacked-color.png" align="right" width="150px"></img> This page shows how to install the `kubeadm` toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the [Creating a cluster with kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) page.
##
* A compatible Linux host. The Kubernetes project provides generic instructions for Linux distributions based on Debian and Red Hat, and those distributions without a package manager. * 2 GB or more of RAM per machine (any less will leave little room for your apps). * 2 CPUs or more for control plane machines. * 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 [here](#verify-mac-address) for more details. * Certain ports are open on your machines. See [here](#check-required-ports) for more details.
> Note: The `kubeadm` installation is done via binaries that use dynamic linking and assumes that your target system provides `glibc`. This is a reasonable assumption on many Linux distributions (including Debian, Ubuntu, Fedora, CentOS, etc.) but it is not always the case with custom and lightweight distributions which don't include `glibc` by default, such as Alpine Linux. The expectation is that the distribution either includes `glibc` or a [compatibility layer](https://wiki.alpinelinux.org/wiki/Running_glibc_programs) that provides the expected symbols.
## Check your OS version
* The kubeadm project supports LTS kernels. See [List of LTS kernels](https://www.kernel.org/category/releases.html). * You can get the kernel version using the command `uname -r`
For more information, see [Linux Kernel Requirements](/docs/reference/node/kernel-version-requirements/).
* The kubeadm project supports recent kernel versions. For a list of recent kernels, see [Windows Server Release Information](https://learn.microsoft.com/en-us/windows/release-health/windows-server-release-info). * You can get the kernel version (also called the OS version) using the command `systeminfo`
For more information, see [Windows OS version compatibility](/docs/concepts/windows/intro/#windows-os-version-support).
A Kubernetes cluster created by kubeadm depends on software that use kernel features. This software includes, but is not limited to the [container runtime](#gloss:container-runtime), the [kubelet](#gloss:kubelet), and a [Container Network Interface](#gloss:cni) plugin.
To help you avoid unexpected errors as a result of an unsupported kernel version, kubeadm runs the `SystemVerification` pre-flight check. This check fails if the kernel version is not supported.
You may choose to skip the check, if you know that your kernel provides the required features, even though kubeadm does not support its version.
## Verify the MAC address and product_uuid are unique for every node {#verify-mac-address}
* 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](https://github.com/kubernetes/kubeadm/issues/31).
## 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 {#check-required-ports}
These [required ports](/docs/reference/networking/ports-and-protocols/) need to be open in order for Kubernetes components to communicate with each …(trimmed)