If you are using a released version of Kubernetes, you should refer to the docs that go with that version.
The latest release of this document can be found [here](http://releases.k8s.io/release-1.1/docs/getting-started-guides/coreos/bare_metal_calico.md).Documentation for other releases can be found at releases.k8s.io.
This document describes how to deploy Kubernetes with Calico networking on bare metal CoreOS. For more information on Project Calico, visit projectcalico.org and the calico-docker repository.
To install Calico on an existing Kubernetes cluster, or for more information on deploying Calico with Kubernetes in a number of other environments take a look at our supported deployment guides.
Specifically, this guide will have you do the following:
- Deploy a Kubernetes master node on CoreOS using cloud-config
- Deploy two Kubernetes compute nodes with Calico Networking using cloud-config
- At least three bare-metal machines (or VMs) to work with. This guide will configure them as follows:
- 1 Kubernetes Master
- 2 Kubernetes Nodes
- Your nodes should have IP connectivity.
This guide will use cloud-config to configure each of the nodes in our Kubernetes cluster.
We'll use two cloud-config files:
master-config.yaml
: Cloud-config for the Kubernetes masternode-config.yaml
: Cloud-config for each Kubernetes node
Let's download the CoreOS bootable ISO. We'll use this image to boot and install CoreOS on each server.
wget http://stable.release.core-os.net/amd64-usr/current/coreos_production_iso_image.iso
You can also download the ISO from the CoreOS website.
Once you've downloaded the image, use it to boot your Kubernetes master. Once booted, you should be automatically logged in as the core
user.
On another machine, download the calico-kubernetes
repository, which contains the necessary cloud-config files for this guide, and make a copy of the file master-config-template.yaml
.
wget https://github.com/projectcalico/calico-kubernetes/archive/master.tar.gz
tar -xvf master.tar.gz
cp calico-kubernetes-master/config/cloud-config/master-config-template.yaml master-config.yaml
You'll need to replace the following variables in the master-config.yaml
file.
<SSH_PUBLIC_KEY>
: The public key you will use for SSH access to this server.
Move the edited master-config.yaml
to your Kubernetes master machine. The CoreOS bootable ISO comes with a tool called coreos-install
which will allow us to install CoreOS and configure the machine using a cloud-config file. The following command will download and install stable CoreOS using the master-config.yaml
file we just created for configuration. Run this on the Kubernetes master.
sudo coreos-install -d /dev/sda -C stable -c master-config.yaml
Once complete, eject the bootable ISO and restart the server. When it comes back up, you should have SSH access as the core
user using the public key provided in the master-config.yaml
file. It may take a few minutes for the machine to be fully configured with Kubernetes and Calico.
The following steps will set up a single Kubernetes node for use as a compute host. Run these steps to deploy each Kubernetes node in your cluster.
First, boot up the node machine using the bootable ISO we downloaded earlier. You should be automatically logged in as the core
user.
Make a copy of the node-config-template.yaml
in the calico-kubernetes
repository for this machine.
cp calico-kubernetes-master/config/cloud-config/node-config-template.yaml node-config.yaml
You'll need to replace the following variables in the node-config.yaml
file to match your deployment.
<HOSTNAME>
: Hostname for this node (e.g. kube-node1, kube-node2)<SSH_PUBLIC_KEY>
: The public key you will use for SSH access to this server.<KUBERNETES_MASTER>
: The IPv4 address of the Kubernetes master.
Move the modified node-config.yaml
to your Kubernetes node machine and install and configure CoreOS on the node using the following command.
sudo coreos-install -d /dev/sda -C stable -c node-config.yaml
Once complete, eject the bootable disc and restart the server. When it comes back up, you should have SSH access as the core
user using the public key provided in the node-config.yaml
file. It will take some time for the node to be fully configured. Once fully configured, you can check that the node is running with the following command on the Kubernetes master.
kubectl get nodes