⎈ k8s knowledge compiler

Creating a cluster with kubeadm [page]deterministic

setup

<img src="/images/kubeadm-stacked-color.png" align="right" width="150px"></img> Using `kubeadm`, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use `kubeadm` to set up a cluster that will pass the [Kubernetes Conformance tests](/blog/2017/10/software-conformance-certification/). `kubeadm` also supports other cluster lifecycle functions, such as [bootstrap tokens](/docs/reference/access-authn-authz/bootstrap-tokens/) and cluster upgrades.

The `kubeadm` tool is good if you need:

  • A simple way for you to try out Kubernetes, possibly for the first time.
  • A way for existing users to automate setting up a cluster and test their application.
  • A building block in other ecosystem and/or installer tools with a larger scope.

You can install and use `kubeadm` on various machines: your laptop, a set of cloud servers, a Raspberry Pi, and more. Whether you're deploying into the cloud or on-premises, you can integrate `kubeadm` into provisioning systems such as Ansible or Terraform.

##

To follow this guide, you need:

  • One or more machines running a deb/rpm-compatible Linux OS; for example: Ubuntu or CentOS.
  • 2 GiB or more of RAM per machine--any less leaves little room for your apps.
  • At least 2 CPUs on the machine that you use as a control-plane node.
  • Full network connectivity among all machines in the cluster. You can use either a public or a private network.

You also need to use a version of `kubeadm` that can deploy the version of Kubernetes that you want to use in your new cluster.

[Kubernetes' version and version skew support policy](/docs/setup/release/version-skew-policy/#supported-versions) applies to `kubeadm` as well as to Kubernetes overall. Check that policy to learn about what versions of Kubernetes and `kubeadm` are supported. This page is written for Kubernetes .

The `kubeadm` tool's overall feature state is General Availability (GA). Some sub-features are still under active development. The implementation of creating the cluster may change slightly as the tool evolves, but the overall implementation should be pretty stable.

> Note: Any commands under `kubeadm alpha` are, by definition, supported on an alpha level.

## Objectives

* Install a single control-plane Kubernetes cluster * Install a Pod network on the cluster so that your Pods can talk to each other

## Instructions

### Preparing the hosts

#### Component installation

Install a [container runtime](#gloss:container-runtime) and kubeadm on all the hosts. For detailed instructions and other prerequisites, see [Installing kubeadm](/docs/setup/production-environment/tools/kubeadm/install-kubeadm/).

> Note: If you have already installed kubeadm, see the first two steps of the [Upgrading Linux nodes](/docs/tasks/administer-cluster/kubeadm/upgrading-linux-nodes) document for instructions on how to upgrade kubeadm.

When you upgrade, the kubelet restarts every few seconds as it waits in a crashloop for kubeadm to tell it what to do. This crashloop is expected and normal. After you initialize your control-plane, the kubelet runs normally.

#### Network setup

kubeadm similarly to other Kubernetes components tries to find a usable IP on the network interfaces associated with a default gateway on a host. Such an IP is then used for the advertising and/or listening performed by a component.

To find out what this IP is on a Linux host you can use:

```shell ip route show # Look for a line starting with "default via" ```

> Note: If two or more default gateways are present on the host, a Kubernetes component will try to use the first one it encounters that has a suitable global unicast IP address. While making this choice, the exact ordering of gateways might vary between different operating systems and kernel versions.

Kubernetes components do not accept custom network interface as an option, therefore a custom IP address must be passed as a flag to all components instances t …(trimmed)

Sources

setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md · docCreating a cluster with kubeadm

Related (25)

references Container Runtimecontainer runtime conf=1
references etcdetcd conf=1
references API serverAPI Server conf=1
references Kubectlkubectl conf=1
part_of {{% heading "prerequisites" %}}describes conf=1
part_of Objectivesdescribes conf=1
part_of Instructionsdescribes conf=1
part_of Clean up {#tear-down}describes conf=1
part_of Version skew policy {#version-skew-policy}describes conf=1
part_of Limitations {#limitations}describes conf=1
part_of Troubleshooting {#troubleshooting}describes conf=1
part_of {{% heading "whatsnext" %}}describes conf=1
part_of Preparing the hostsdescribes conf=1
part_of Preparing the required container imagesdescribes conf=1
part_of Initializing your control-plane nodedescribes conf=1
part_of More informationdescribes conf=1
part_of Managed node labelsdescribes conf=1
part_of Control plane node isolationdescribes conf=1
part_of Adding more control plane nodesdescribes conf=1
part_of Adding worker nodes {#join-nodes}describes conf=1
part_of (Optional) Proxying API Server to localhostdescribes conf=1
part_of Remove the nodedescribes conf=1

← all Docs