Deploy Kubernetes cluster

First published: Monday, August 25, 2025 | Last updated: Monday, August 25, 2025

Deploy Kubernetes cluster using the SloopStash Chef starter-kit.


Previous: Deploy Docker swarm cluster

Deploy and manage Kubernetes cluster using Chef

# Switch to SloopStash Chef starter-kit directory.
$ cd /opt/kickstart-chef

# Create Chef role.
$ knife role create kubernetes
{
  "name":"kubernetes",
  "description":"",
  "json_class":"Chef::Role",
  "default_attributes":{},
  "override_attributes":{},
  "chef_type":"role",
  "run_list":[
	  "recipe[system::setup]",
	  "recipe[system::configure]",
	  "recipe[system::stop]",
	  "recipe[system::start]",
    "recipe[docker::setup]",
    "recipe[docker::configure]",
    "recipe[docker::stop]",
    "recipe[docker::start]",
    "recipe[docker_cri::setup]",
    "recipe[docker_cri::configure]",
    "recipe[docker_cri::stop]",
    "recipe[docker_cri::start]",
    "recipe[kubernetes::setup]",
    "recipe[kubernetes::configure]",
    "recipe[kubernetes::stop]",
    "recipe[kubernetes::start]"
  ],
  "env_run_lists":{}
}

On-premise (VirtualBox)

# Switch to SloopStash Chef starter-kit directory.
$ cd /opt/kickstart-chef

# Bootstrap Chef nodes for Kubernetes master nodes.
$ knife bootstrap vagrant@192.168.101.61 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-mtr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.101.62 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-mtr-2 -E sloopstash-${ENVIRONMENT}

# Bootstrap Chef nodes for Kubernetes worker nodes.
$ knife bootstrap vagrant@192.168.101.64 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-wkr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.101.65 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-wkr-2 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.101.66 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-wkr-3 -E sloopstash-${ENVIRONMENT}

# Execute Chef role against Chef node.
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-mtr-1 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-mtr-2 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-wkr-1 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-wkr-2 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-wkr-3 'role[kubernetes]'

On-premise (VMware)

# Switch to SloopStash Chef starter-kit directory.
$ cd /opt/kickstart-chef

# Bootstrap Chef nodes for Kubernetes master nodes.
$ knife bootstrap vagrant@192.168.201.61 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-mtr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.201.62 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-mtr-2 -E sloopstash-${ENVIRONMENT}

# Bootstrap Chef nodes for Kubernetes worker nodes.
$ knife bootstrap vagrant@192.168.201.64 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-wkr-1 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.201.65 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-wkr-2 -E sloopstash-${ENVIRONMENT}
$ knife bootstrap vagrant@192.168.201.66 -i secret/ssh/node -y -N sloopstash-${ENVIRONMENT}-k8s-wkr-3 -E sloopstash-${ENVIRONMENT}

# Execute Chef role against Chef node.
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-mtr-1 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-mtr-2 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-wkr-1 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-wkr-2 'role[kubernetes]'
$ knife node run_list add sloopstash-${ENVIRONMENT}-k8s-wkr-3 'role[kubernetes]'

Previous: Deploy Docker swarm cluster