2019-02-03 16:26:04 +03:00
# Kubernetes The Hard Way on KVM(Work in Progess)
2016-07-07 17:15:59 +03:00
2017-12-18 17:58:00 +03:00
This tutorial walks you through setting up Kubernetes the hard way. This guide is not for people looking for a fully automated command to bring up a Kubernetes cluster. If that's you then check out [Google Kubernetes Engine ](https://cloud.google.com/kubernetes-engine ), or the [Getting Started Guides ](http://kubernetes.io/docs/getting-started-guides/ ).
2016-07-07 17:27:23 +03:00
2017-08-29 00:19:25 +03:00
Kubernetes The Hard Way is optimized for learning, which means taking the long route to ensure you understand each task required to bootstrap a Kubernetes cluster.
2016-07-09 02:35:09 +03:00
2017-08-29 00:19:25 +03:00
> The results of this tutorial should not be viewed as production ready, and may receive limited support from the community, but don't let that stop you from learning!
2016-09-11 23:37:41 +03:00
2016-07-07 17:27:23 +03:00
## Target Audience
2017-08-29 00:19:25 +03:00
The target audience for this tutorial is someone planning to support a production Kubernetes cluster and wants to understand how everything fits together.
2016-07-07 17:27:23 +03:00
2019-02-17 13:18:09 +03:00
Also this tutorial assumes that you have some experiences of KVM (i.e. creating and deleting VMs).
2016-07-07 23:47:11 +03:00
## Cluster Details
2017-08-29 00:19:25 +03:00
Kubernetes The Hard Way guides you through bootstrapping a highly available Kubernetes cluster with end-to-end encryption between components and RBAC authentication.
2016-07-07 23:47:11 +03:00
2018-09-30 22:35:05 +03:00
* [Kubernetes ](https://github.com/kubernetes/kubernetes ) 1.12.0
* [containerd Container Runtime ](https://github.com/containerd/containerd ) 1.2.0-rc.0
* [gVisor ](https://github.com/google/gvisor ) 50c283b9f56bb7200938d9e207355f05f79f0d17
2017-10-02 06:37:09 +03:00
* [CNI Container Networking ](https://github.com/containernetworking/cni ) 0.6.0
2018-09-30 22:35:05 +03:00
* [etcd ](https://github.com/coreos/etcd ) v3.3.9
* [CoreDNS ](https://github.com/coredns/coredns ) v1.2.2
2016-09-11 09:27:33 +03:00
2019-02-17 12:39:08 +03:00
## Table of Contents
2016-09-12 20:57:12 +03:00
2019-02-17 11:42:56 +03:00
This tutorial assumes you have an KVM host or a Linux PC running KVM. While KVM host is used for basic infrastructure requirements the lessons learned in this tutorial may be applied to other platforms.
2017-08-29 00:19:25 +03:00
* [Prerequisites ](docs/01-prerequisites.md )
2019-02-17 11:55:07 +03:00
* [Provisioning Compute Resources ](docs/02-compute-resources.md )
* [Installing the Client Tools ](docs/03-client-tools.md )
2017-08-29 00:19:25 +03:00
* [Provisioning the CA and Generating TLS Certificates ](docs/04-certificate-authority.md )
* [Generating Kubernetes Configuration Files for Authentication ](docs/05-kubernetes-configuration-files.md )
* [Generating the Data Encryption Config and Key ](docs/06-data-encryption-keys.md )
* [Bootstrapping the etcd Cluster ](docs/07-bootstrapping-etcd.md )
* [Bootstrapping the Kubernetes Control Plane ](docs/08-bootstrapping-kubernetes-controllers.md )
* [Bootstrapping the Kubernetes Worker Nodes ](docs/09-bootstrapping-kubernetes-workers.md )
* [Configuring kubectl for Remote Access ](docs/10-configuring-kubectl.md )
2019-02-16 19:00:09 +03:00
* [Adding Pod Network Routes ](docs/11-pod-network-routes.md )
2017-08-29 00:19:25 +03:00
* [Deploying the DNS Cluster Add-on ](docs/12-dns-addon.md )
* [Smoke Test ](docs/13-smoke-test.md )
* [Cleaning Up ](docs/14-cleanup.md )
2019-02-03 16:40:39 +03:00
## References
2019-02-17 11:32:33 +03:00
### Kubernetes
2019-02-03 16:40:39 +03:00
* [Kubernetes The Hard Way ](https://github.com/kelseyhightower/kubernetes-the-hard-way )
* [Kubernetes The Hard Way - Bare Metal ](https://github.com/Praqma/LearnKubernetes/blob/master/kamran/Kubernetes-The-Hard-Way-on-BareMetal.md )
2019-02-17 11:32:33 +03:00
2019-02-17 11:42:56 +03:00
2019-02-17 11:32:33 +03:00
### HA Proxy
* [Load Balancing with HAProxy ](https://serversforhackers.com/c/load-balancing-with-haproxy )
* [How to Use HAProxy for Load Balancing ](https://www.linode.com/docs/uptime/loadbalancing/how-to-use-haproxy-for-load-balancing/ )
* [HAProxy TCP Reverse Proxy Setup Guide (SSL/TLS Passthrough Proxy) ](https://www.ssltrust.com.au/help/setup-guides/haproxy-reverse-proxy-setup-guide )
* [TLS errors in apiserver when running with calico ](https://github.com/kubernetes-incubator/bootkube/issues/960 )
* [Building HAProxy so that it can use TLSv1.3 ](https://dnsprivacy.org/wiki/display/DP/Building+HAProxy+so+that+it+can+use+TLSv1.3 )
2019-02-17 11:42:56 +03:00
### tmux
2019-02-17 11:32:33 +03:00
* [tmux Tutorial — Split Terminal Windows Easily ](https://lukaszwrobel.pl/blog/tmux-tutorial-split-terminal-windows-easily/ )
* [How do I equally balance tmux(1) split panes? ](https://unix.stackexchange.com/questions/32986/how-do-i-equally-balance-tmux1-split-panes )
2019-02-17 11:42:56 +03:00
2019-02-17 11:32:33 +03:00
### SSH
* [Copy SSH RSA security key for multiple servers ](http://www.technokain.org/copy-ssh-rsa-security-key-multiple-servers/ )