Setting Up a Kubernetes Cluster with VirtualBox VMs

Preparing Virtual Machines

We begin with a base VM named Node1 wich will serve as the master node. Using VirtualBox's cloning feature, we create two identical worker nodes:

  • Node1: Master
  • Node2: Worker
  • Node3: Worker

Kubernetes Installation

Configuring Yum Repository

Add Kubernetes repository using Aliyun mirror:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

System Configuration

Disable swap and firewall:

swapoff -a
systemctl disable firewalld

Disable SELinux:

setenforce 0

Installing Components

Install Kubernetes packages:

yum install -y kubelet kubeadm kubectl

Configuring cgroup Driver

Ensure Docker and kubelet use same cgroup driver:

docker info | grep -i cgroup
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload

Initilaizing the Cluster

On master node (Node1):

kubeadm init \
  --pod-network-cidr=192.168.0.0/16 \
  --kubernetes-version=v1.10.0 \
  --apiserver-advertise-address=192.168.56.101

After initialization, configure kubectl:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Network Setup

Install Calico network plugin:

kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

Adding Worker Nodes

On each worker node, run the join command provided by kubeadm init output:

kubeadm join 192.168.56.101:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

Verifying Cluster Status

Check node status:

kubectl get nodes

Check pod status:

kubectl get pods -n kube-system

Making Master Node Schedulable

To allow pods on master node:

kubectl taint nodes --all node-role.kubernetes.io/master-

Tags: kubernetes cluster VirtualBox devops containers

Posted on Wed, 23 Sep 2026 16:38:15 +0000 by jdog5