Authors: Paulo Pires, Bob Steciuk bsteciuk@apprenda.com
This document describes, step-by-step, how to provision a Kubernetes cluster comprised of:
- One Linux machine acting as Kubernetes master node and OVN central database.
- One Linux machine acting as Kubernetes worker node.
- One Windows machine acting as Kubernetes worker node.
- One Linux machine acting as gateway node.
Many thanks to the great people that helped achieve this, namely:
- Alin Serdean (Cloudbase Solutions)
- Alin Balutoiu (Cloudbase Solutions)
- Feng Min (Google)
- Peter Hornyack (Google)
- The authors of https://github.com/openvswitch/ovn-kubernetes
- Kubernetes SIG-Windows
At the time of this writing, the instructions are meant to be run on Google Compute Engine, but apart from gcloud
calls and a few networking details, everything detailed below should work regardless of the adopted cloud-provider.
Having that said, here are the requirements:
- Use Google Cloud Platform (GCP), namely Google Compute Engine (GCE) VMs.
gcloud
CLI tool
- Linux machines(s) run Ubuntu 16.04 with latest updates.
- Windows machine(s) run Windows Server 2016 with latest updates.
- Administrator access to all VMs, i.e.
root
in Linux machines.
Follow these steps to deploy your cluster:
- Deploy the master node, where the OVS/OVN and Kubernetes master components will run.
- Deploy worker nodes, Linux and Windows, where the Kubernetes workloads will run.
- Deploy a gateway node, needed for pod container access to the Internet and for exposing services to the Internet (through services with
NodePort
load-balancer type).
Go Here for instructions on an automated deployment of the same cluster described in the manual steps above on Google Cloud Platform.
Heterogeneous Kubernetes cluster demo.
Some pending issues:
As root
, run:
apt update
apt install -y build-essential fakeroot dkms \
autoconf automake debhelper dh-autoreconf libssl-dev libtool \
python-all python-twisted-conch python-zopeinterface \
graphviz
cd ~
git clone https://github.com/openvswitch/ovs.git
cd ovs
git checkout branch-2.6
dpkg-checkbuilddeps
DEB_BUILD_OPTIONS='nocheck' fakeroot debian/rules binary