- A working Vagrant setup using Vagrant + VirtualBox
Here is the high level workflow.
The setup is updated with 1.31 cluster version.
- Have kubectl installed on your machine
- Run script init.sh to install Vagrant and Virtualbox 7.0 Version
- Install vagrant-vbguest plugin
vagrant plugin install vagrant-vbguest
sudo mkdir -p /etc/vbox
echo "* 10.0.0.0/8" | sudo tee -a /etc/vbox/networks.conf
echo "* 192.168.56.0/21" | sudo tee -a /etc/vbox/networks.conf
sudo systemctl restart vboxdrv
cd Kubernetes && vagrant up
- Working Vagrant setup
- 8 Gig + RAM workstation as the Vms use 3 vCPUS and 4+ GB RAM
So that the host only networks can be in any range, not just 192.168.56.0/21 as described here: https://discuss.hashicorp.com/t/vagrant-2-2-18-osx-11-6-cannot-create-private-network/30984/23
To provision the cluster, execute the following commands.
git clone https://github.com/renatowow14/Kubernetes.git
cd Kubernetes
vagrant up
cd Kubernetes
cd configs
export KUBECONFIG=$(pwd)/config
or you can copy the config file to .kube directory.
cp config ~/.kube/
The dashboard is automatically installed by default, but it can be skipped by commenting out the dashboard version in settings.yaml before running vagrant up
.
If you skip the dashboard installation, you can deploy it later by enabling it in settings.yaml and running the following:
vagrant ssh -c "/vagrant/scripts/dashboard.sh" controlplane
To get the login token, copy it from config/token or run the following command:
kubectl -n kubernetes-dashboard get secret/admin-user -o go-template="{{.data.token | base64decode}}"
Make the dashboard accessible:
kubectl proxy
Open the site in your browser:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
vagrant halt
vagrant up
vagrant destroy -f
+-------------------+
| External |
| Network/Internet |
+-------------------+
|
|
+-------------+--------------+
| Host Machine |
| (Internet Connection) |
+-------------+--------------+
|
| NAT
+-------------+--------------+
| K8s-NATNetwork |
| 192.168.99.0/24 |
+-------------+--------------+
|
|
+-------------+--------------+
| k8s-Switch (Internal) |
| 192.168.99.1/24 |
+-------------+--------------+
| | |
| | |
+-------+--+ +---+----+ +-+-------+
| Master | | Worker | | Worker |
| Node | | Node 1 | | Node 2 |
|192.168.99| |192.168.| |192.168. |
| .99 | | 99.81 | | 99.82 |
+----------+ +--------+ +---------+
This network graph shows:
- The host machine connected to the external network/internet.
- The NAT network (K8s-NATNetwork) providing a bridge between the internal network and the external network.
- The internal Hyper-V switch (k8s-Switch) connecting all the Kubernetes nodes.
- The master node and two worker nodes, each with their specific IP addresses, all connected to the internal switch.