Kubernetes has a fairly complex architecture. For years, developers and operators shied away from trying it out because of its complex installation. Its popularity pushed the community to find ways to simplify this process and tools like kubeadm were created. However, even kubeadm
is not straightforward for most. Today I will show you the simplest way I found out to have a certified Kubernetes installation in just one command line: MicroK8s.
Install
As promised the install requires only one command line on systems that supports snaps such as Ubuntu.
1
| sudo snap install microk8s --classic
|
Done! Use microk8s.kubectl
to manage your cluster.
1
| microk8s.kubectl get nodes
|
1
2
| NAME STATUS ROLES AGE VERSION
ubuntu-server Ready <none> 1m v1.17.0
|
Addons
MicroK8s comes prepackaged with some popular addons like Istio, DNS, and much more. List them with microk8s.status
and enable them with microk8s.enable
. I advise you to install the dns
addon at least.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| microk8s is running
addons:
cilium: disabled
dashboard: disabled
dns: enabled
fluentd: disabled
gpu: disabled
helm: disabled
ingress: disabled
istio: disabled
jaeger: disabled
juju: disabled
knative: disabled
kubeflow: disabled
linkerd: disabled
metallb: disabled
metrics-server: disabled
prometheus: disabled
rbac: disabled
registry: disabled
storage: disabled
|
Adding more nodes
You can easily add nodes with MicroK8s in just two steps.
Run microk8s.add-node
on the node you wish to act as master. This command will install the control plane and output the command you need to run on the other nodes to join them.
1
2
3
4
5
6
| Join node with: microk8s.join 192.168.202.85:25000/GUvBqpyxYFcOANDKRmwxmEpfRtaTQmRm
If the node you are adding is not reachable through the default interface you can use one of the following:
microk8s.join 192.168.202.85:25000/GUvBqpyxYFcOANDKRmwxmEpfRtaTQmRm
microk8s.join 10.1.76.0:25000/GUvBqpyxYFcOANDKRmwxmEpfRtaTQmRm
microk8s.join 172.17.0.1:25000/GUvBqpyxYFcOANDKRmwxmEpfRtaTQmRm
|
Then, access the other nodes and run the outputted command. You need to have MicroK8s pre-installed on the node.
1
| microk8s.join 192.168.202.85:25000/GUvBqpyxYFcOANDKRmwxmEpfRtaTQmRm
|
Done. Let’s go back to the master and check if the node is visible.
1
| microk8s.kubectl get nodes
|
1
2
3
| NAME STATUS ROLES AGE VERSION
ubuntu-server Ready <none> 20m v1.17.0
ubuntu-server-node01 Ready <none> 11s v1.17.0
|
Testing the installation
Let’s create a Pod with a busybox
container. We will then execute a shell on it and test out DNS resolution.
1
| microk8s.kubectl apply -f https://raw.githubusercontent.com/marcolenzo/blogfiles/master/kubernetes/pods/busybox.yaml
|
Let’s verify that the Pod is running.
1
| microk8s.kubectl get pods
|
1
2
| NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 2m5s
|
Let’s get a shell and try to resolve the kubernetes
service through DNS.
1
| microk8s.kubectl exec -ti busybox sh
|
1
2
3
4
5
6
| / # nslookup kubernetes
Server: 10.152.183.10
Address: 10.152.183.10:53
Name: kubernetes.default.svc.cluster.local
Address: 10.152.183.1
|
Perfect!
Conclusion
You have no excuses! You have to try out Kubernetes. It has been democratized up to the level that it takes a single command line to have a certified installation running wherever you want: Linux, Windows and macOS. Start using it and you will never go back to traditional deployments.