Kube-Cluster for macOS is status bar app
which allows in an easy way to control and bootstrap multi-node (master+ two nodes) Kubernetes cluster on three CoreOS VMs.
It leverages macOS native Hypervisor framework of using xhyve based corectl command line tool without any needs to use VirtualBox or similar virtualisation software.
New: After successful install you can control kube-cluster VMs via kcluster
cli as well. Cli resides in ~/kube-cluster/bin
folder and has simple commands: kcluster start|stop|status|ip
. Just copy the kcluster
to your pre-set path and you are good to control Kubernetes Cluster via cli, it is specially handy for automation tasks.
Includes: Helm Classic - The Kubernetes Package Manager and an option from shell to install Deis Workflow on top of Kubernetes: $ install_deis
Kube-Cluster App can be used together with CoreOS VM App which allows to build Docker containers and both apps have access to the same local Docker registry hosted by Corectl App.
Head over to the Releases Page to grab the latest release.
- macOS 10.10.3 Yosemite or later
- Mac 2010 or later for this to work
- Note: Corectl App must be installed, which will serve as
corectld
server daemon control.
###Install:
- Download Corectl App
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 macOS - Open downloaded
dmg
file and drag the App e.g. to your Desktop. Start theKube-Cluster
andInitial setup of Kube-Cluster VMs
will run, then follow the instructions there.
TL;DR
- App's files are installed to
~/kube-solo
folder - App will bootstrap
master+worker
Kubernetes cluster on the single VM - Mac user home folder can be enabled via
Setup\Enable shared NFS user home folder
to automaticly mounted to VM:/Users/my_user
:/Users/my_user
on each VM boot - macOS
docker
client is installed to~/kube-solo/bin
and preset inOS shell
to be used from there, so you can builddocker
images on the VM and use with Kubernetes
The install will do the following:
- All dependent files/folders will be put under
kube-cluster
folder in the user's home folder e.g/Users/someuser/kube-cluster
- user-data file will have fleet, etcd and flannel set
- Will download latest CoreOS ISO image (if there is no such) and run
corectl
to initialise VM - When you first time do install or 'Up' after destroying Kube-Cluster setup, k8s binary files (with the version which was available when the App was built) get copied to CoreOS VMs, this speeds up Kubernetes cluster setup.
- It will install
fleetctl, kubectl, helmc and deis
clients to~/kube-cluster/bin/
- Kubernetes services will be installed with fleet units which are placed in
~/kube-cluster/fleet
, this allows very easy updates to fleet units if needed. - Fleet-UI via unit file will be installed to check running fleet units
- Kubernetes Dashboard, DNS and Kubedash will be instlled as add-ons
- Via assigned static IPs (which will be shown on first boot and will survive VMs reboots) you can access any port on any CoreOS VM
- Persistent sparse disks (QCow2)
xxx-data.img
will be created and mounted to VMs as/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-Cluster
application and you will find a small icon with the Kubernetes logo in the Status Bar.
- There you can
Up
,Halt
,Reload
CoreOS VMs - Under
Up
andOS Shell
OS Shell (terminal) will have such environment set:
1) kubernetes master - export KUBERNETES_MASTER=http://192.168.64.xxx:8080
2) etcd endpoint - export ETCDCTL_PEERS=http://192.168.64.xxx:2379
3) fleetctl endpoint - export FLEETCTL_ENDPOINT=http://192.168.64.xxx:2379
4) fleetctl driver - export FLEETCTL_DRIVER=etcd
5) Path to ~/kube-cluster/bin where fleetctl, helmc, deis and kubectl are stored
Updates/Update Kubernetes to latest stable version
will update to latest stable version of Kubernetes.Updates\Change Kubernetes version
allows you to insatll any Kubernetes version available on github.com.Updates/Update macOS fleetctl, helmc and deis clients
will update fleetctl to the same versions as Kube-Cluster Master runs and helmc and deis to the latest versions.SSH to k8smaster01 and k8snode-01/02
menu options will open VMs shell- Fleet-UI dashboard will show running fleet units and etc
- Kubernetes Dashboard will show nice Kubernetes Dashboard, where you can check Nodes, Pods, Replication, Deployments, Service Controllers, deploy Apps and etc.
- Kubedash is a performance analytics UI for Kubernetes Clusters
Example ouput of succesfull CoreOS + Kubernetes cluster install:
fleetctl list-units:
UNIT MACHINE ACTIVE SUB
fleet-ui.service 78ea6428.../192.168.64.5 active running
kube-apiserver.service 78ea6428.../192.168.64.5 active running
kube-controller-manager.service 78ea6428.../192.168.64.5 active running
kube-scheduler.service 78ea6428.../192.168.64.5 active running
kube-kubelet.service 1d00e269.../192.168.64.6 active running
kube-kubelet.service de9127a5.../192.168.64.7 active running
kube-proxy.service 1d00e269.../192.168.64.6 active running
kube-proxy.service de9127a5.../192.168.64.7 active running
Waiting for Kubernetes cluster to be ready. This can take a few minutes...
\...
Waiting for Kubernetes nodes to be ready. This can take a bit...
-...
node "k8snode-01" labeled
node "k8snode-02" labeled
Creating kube-system namespace ...
Installing SkyDNS ...
replicationcontroller "kube-dns-v17" created
service "kube-dns" created
Installing Kubernetes UI ...
replicationcontroller "kubernetes-dashboard-v1.1.0" created
service "kubernetes-dashboard" created
Installing Kubedash ...
deployment "kubedash" created
service "kubedash" created
kubectl get nodes:
NAME STATUS AGE
k8snode-01 Ready 6s
k8snode-02 Ready 6s
You're now ready to use Kubernetes cluster.
Some examples to start with Kubernetes examples.
-
Kubernetes Solo Cluster VM App can be found here Kube-Solo for macOS.
-
Standalone CoreOS VM App (good for docker images building and testing) can be found here CoreOS VM for macOS.
-
CoreOS Cluster App without Kubernetes can be found here CoreOS Cluster for macOS.
Kube-Cluster for macOS is an open source project release under the Apache License, Version 2.0, hence contributions and suggestions are gladly welcomed!