This tutorial is a modified version of the original developed by Kelsey Hightower.
Kubernetes The Hard Way On VirtualBox
This tutorial walks you through setting up Kubernetes the hard way on a local machine using VirtualBox. 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, or the Getting Started Guides.
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.
This tutorial is a modified version of the original developed by Kelsey Hightower. While the original one uses GCP as the platform to deploy kubernetes, we use VirtualBox and Vagrant to deploy a cluster on a local machine. If you prefer the cloud version, refer to the original one here
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!
Please note that with this particular challenge, it is all about the minute detail. If you miss one tiny step anywhere along the way, it's going to break!
Always run the cert_verify
script at the places it suggests, and always ensure you are on the correct node when you do stuff. If cert_verify
shows anything in red, then you have made an error in a previous step. For the master node checks, run the check on master-1
and on master-2
Target Audience
The target audience for this tutorial is someone planning to support a production Kubernetes cluster and wants to understand how everything fits together.
Cluster Details
Kubernetes The Hard Way guides you through bootstrapping a highly available Kubernetes cluster with end-to-end encryption between components and RBAC authentication.
- Kubernetes 1.24.3
- Container Runtime 1.5.9
- CNI Container Networking 0.8.6
- Weave Networking
- etcd v3.5.3
- CoreDNS v1.9.4
Node configuration
We will be building the following:
- Two control plane nodes (
master-1
andmaster-2
) running the control plane components as operating system services. - Two worker nodes (
worker-1
andworker-2
) - One loadbalancer VM running HAProxy to balance requests between the two API servers.
Labs
- Prerequisites
- Provisioning Compute Resources
- Installing the Client Tools
- Provisioning the CA and Generating TLS Certificates
- Generating Kubernetes Configuration Files for Authentication
- Generating the Data Encryption Config and Key
- Bootstrapping the etcd Cluster
- Bootstrapping the Kubernetes Control Plane
- Installing CRI on Worker Nodes
- Bootstrapping the Kubernetes Worker Nodes
- TLS Bootstrapping the Kubernetes Worker Nodes
- Configuring kubectl for Remote Access
- Deploy Weave - Pod Networking Solution
- Kube API Server to Kubelet Configuration
- Deploying the DNS Cluster Add-on
- Smoke Test
- E2E Test
- Extra - Certificate Verification