Local development Kubernetes Solo Cluster for macOS made very simple
This project is not maintained anymore, please use minikube instead
Kube-Solo for macOS is a status bar App
which allows in an easy way to bootstrap and control Kubernetes cluster on a standalone CoreOS VM machine. VM can also be controlled via ksolo
cli. Also VM's docker
API is exposed to macOS, so you can build your docker images with the same app and use them with Kubernetes.
Kube-Solo for macOS is a similar app to minikube, just has more functionality and is an older project. You can run both Apps on your Mac even in parallel.
It leverages macOS native Hypervisor virtualisation framework of using corectl command line tool, so there are no needs to use VirtualBox or any other virtualisation software anymore.
Includes: Helm v2 - The Kubernetes Package Manager and an option from shell to install Deis Workflow PaaS on top of Kubernetes with a simple: $ install_deis
command.
App's menu looks as per image below:
Head over to the Releases Page to grab the latest release.
corectld
server daemon control.
brew install libev
latest dmg
from the Releases Page and install it to /Applications
folder, it allows to start/stop/update corectl tools needed to run CoreOS VMs on macOSdmg
file and drag the App e.g. to your Desktop. Start the Kube-Solo
App and Initial setup of Kube-Solo VM
will run, then follow the instructions there.TL;DR
~/kube-solo
foldermaster+worker
Kubernetes cluster on the single VM/Users/my_user
:/Users/my_user
on each VM boot, check the PV example how to use Persistent Volumes.docker
client is installed to ~/kube-solo/bin
and preset in OS shell
to be used from there, so you can build docker
images on the VM and use with Kuberneteskube-solo
VM via ksolo
cli as well. Cli resides in ~/kube-solo/bin
and ~/bin
folders and has simple commands: ksolo start|stop|status|ip|ssh|shell
, just add ~/bin
to your pre-set path.The install will do the following:
~/kube-solo
folder in the user's home folder e.g /Users/someuser/kube-solo
.corectl
to initialise VMUp
after destroying Kube-Solo setup, k8s binary files (with the version which was available when the App was built) get copied to VM, this allows to speed up Kubernetes setup.docker, helm, deis and kubectl
clients to ~/kube-solo/bin/
data.img
will be created and mounted to /data
for these mount binds and other folders:/data/var/lib/docker -> /var/lib/docker
/data/var/lib/rkt -> /var/lib/rkt
/var/lib/kubelet sym linked to /data/kubelet
/data/opt/bin
/data/var/lib/etcd2
/data/kubernetes
Just start Kube-Solo
application and you will find a small icon of Kubernetes logo with S
in the Status Bar.
Up
and Halt
k8solo-01 VMSSH to k8solo-01
will open VM shellUp
OS Shell will be opened after VM boots up and it will have such environment pre-set:kubernetes master - export KUBERNETES_MASTER=http://192.168.64.xxx:8080
etcd endpoint - export ETCDCTL_PEERS=http://192.168.64.xxx:2379
DOCKER_HOST=tcp://192.168.64.xxx:2375
Path to `~/kube-solo/bin` where macOS clients and shell scripts are stored
ksolo start
will start k8solo-01 VM and shell environment will be pre-set as above.ksolo stop
will stop VMksolo status
will show VM's statusksolo ip
will show VM's IPksolo ssh
will ssh to VMksolo shell
will open pre-set shellCheck for App updates
will check for a new app versionUpdates/Update Kubernetes to the latest version
will update to latest version of Kubernetes.Updates/Change Kubernetes version
will download and install specified Kubernetes version from GitHub.Updates/Update macOS helm and deis clients
will update helm
and deis
to the latest version.Setup/
will allow you to do:- Change CoreOS Release Channel
- Change VM's RAM size
- Destroy Kube-Solo VM (just deletes data.img file)
- Initial setup of Kube-Solo VM
Example output of succesfull Kubernetes Solo install:
kubectl cluster-info:
Kubernetes master is running at http://192.168.64.3:8080
KubeDNS is running at http://192.168.64.3:8080/api/v1/proxy/namespaces/kube-system/services/kube-dns
kubernetes-dashboard is running at http://192.168.64.3:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
Cluster version:
Client version: v1.5.1
Server version: v1.5.1
kubectl get nodes:
NAME STATUS AGE
k8solo-01 Ready 12s
You're now ready to use Kubernetes cluster.
Some examples to start with Kubernetes examples.
Kubernetes Cluster (master + 2 nodes) App - Kube-Cluster for OS X.
Standalone CoreOS VM App - CoreOS macOS.
CoreOS Cluster (control + 2 nodes) App - CoreOS-Vagrant Cluster.
Kube-Solo for macOS is an open source project release under the Apache License, Version 2.0, hence contributions and suggestions are gladly welcomed!