Kubernetes Installation on Bare Metal & CoreOS

This guide walks a deployer through launching a multi-node Kubernetes cluster on bare metal servers running CoreOS. After completing this guide, a deployer will be able to interact with the Kubernetes API from their workstation using the kubectl CLI tool.

Deployment requirements

CoreOS version

All Kubernetes controllers and nodes must use CoreOS version 962.0.0 or greater for the kubelet-wrapper script to be present in the image. If you wish to use an earlier version (e.g. from the 'stable' channel) see kubelet-wrapper for more information.

Kubernetes pod network

This configuration uses the flannel overlay network to manage the pod network. Many bare metal configurations may instead have an existing self-managed network. In this scenario, it is common to use Calico to manage pod network policy while omitting the overlay network, and interoperating with existing physical network gear over BGP.

See the Kubernetes networking documentation for more information on self-managed networking options.


Network booting and provisioning CoreOS clusters can be automated using the CoreOS matchbox project. It includes:

  • Guides for creating network boot environments with iPXE/GRUB
  • The matchbox HTTP/gRPC service for booting and provisioning bare-metal machines. Match machines by their hardware attributes and serve templated Ignition provisioning configurations.
  • Example clusters including an etcd cluster, multi-node Kubernetes cluster, and self-hosted Kubernetes cluster.

Get started provisioning your machines into CoreOS clusters.

The CoreOS bare metal installation documents provide background and deployment options for the boot mechanisms:

Mixing multiple methods is possible. For example, doing an install to disk for the machines running the etcd cluster and Kubernetes master nodes, but PXE-booting the worker machines.

Did you install CoreOS on your machines? An SSH connection to each machine is all that's needed. We'll start the configuration next.

I'm ready to get started