Current kubernetes version: 1.32.1
curl -O https://raw.githubusercontent.com/bashtools/mok/refs/heads/master/package/mok
chmod +x mok
sudo mv mok /usr/local/bin/
mok build image --get-prebuilt-image
mok create cluster myk8s --masters 1 --publish
export KUBECONFIG=/var/tmp/admin-myk8s.conf
kubectl get nodes
kubectl get pods --all-namespaces
kubectl run --privileged --rm -ti alpine --image alpine /bin/sh
mok delete cluster myk8s
To ensure no resources are used on Mac OS afterwards, run mok machine destroy
.
MacOS on Apple Silicon (M1, M2, ...)
- Mok will will install any required packages using Homebrew, and will prompt you before doing so.
- To see exactly how and what will be installed, see
src/macos.sh
.
Fedora Desktop or Server
- Install Podman.
Use curl
to download mok
and move it to /usr/local/bin
:
curl -O https://raw.githubusercontent.com/bashtools/mok/refs/heads/master/package/mok
chmod +x mok
sudo mv mok /usr/local/bin/
On Linux only, use sudo mok ...
or create an alias so that only mok
is needed:
alias mok="sudo /usr/local/bin/mok"
Note: Add the alias to your shell startup file (.bash_profile
or .zshrc
) to make it persistent
mok build image --get-prebuilt-image
mok create cluster myk8s --masters 1 --publish
For Mac users --publish
must be used - but it's optional for Linux users:
Naturally, the kubectl command is needed for this.
export KUBECONFIG=/var/tmp/admin-myk8s.conf
kubectl get nodes
kubectl get pods --all-namespaces
# --privileged is required if you want to `ping` a host
kubectl run --privileged --rm -ti alpine --image alpine /bin/sh
mok -h
mok create -h
mok build -h
mok machine -h
# ... etc ...
mok delete cluster myk8s
mok machine destroy
If mok
installed Homebrew, then remove homebrew and all its installed packages with:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
Then to completely remove any left over directories run:
sudo rm -rf /opt/homebrew
Finally, delete mok
, with:
sudo rm /usr/local/bin/mok
sudo rm /usr/local/bin/mok
# If you used git and make, then delete the git repo
rm -rf mok/
Then delete the podman images that were built by mok build
.
- With multiple master nodes only the first master is set up
- Currently only single node clusters can be stopped and restarted
- For Mac, if you installed Homebrew with
mok
then you should run/opt/homebrew/bin/brew doctor
and follow the instructions shown there if you want to use Homebrew outside of Mok, or if you want to run the utilities that mok installed (podman for example).
-
Podman Desktop is not required
-
On Mac OS all the required packages are installed for you
-
On Mac OS it uses a non-default podman machine, so won't mess up your existing podman installation
-
Builds kubernetes master and worker nodes in containers
-
Very simple to use without need for YAML files
-
After creating the image a single node cluster builds in under 60 seconds
-
For multi-node clusters the 'create cluster' command returns only when kubernetes is completely ready, with all nodes and pods up and ready.
-
Can skip setting up kubernetes on the master and/or worker node (good for learning!)
- In this case the set-up scripts are placed in
/root
in the containers and can be run by hand - Can do kubernetes the hard way (see kthwic)
- In this case the set-up scripts are placed in
-
mok build
andmok create
can show extensive kubernetes logs with--tailf
Follow Mok on BlueSky or give Mok a star.