- 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 upcd Kubernetes
cd configs
export KUBECONFIG=$(pwd)/configor 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" controlplaneTo 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 proxyOpen the site in your browser:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/loginvagrant haltvagrant upvagrant 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.
