MicroK8s, Part 2: How To Monitor and Manage Kubernetes
Tom Fenton shows you how to use both the command line and a GUI to monitor K8s.
This is the second article in a series on Kubernetes (K8s). In my previous article, I showed you how fast and easy it is to install K8s by using Ubuntu as a base system with the MicroK8s snap -- it took me less than 10 minutes. In this article, I go a step further and show you how I monitored and managed K8s by using a GUI.
Kubectl is a command-line interface for managing a K8s environment. The syntax for the kubectl command is kubectl [command] [TYPE] [NAME] [flags]. To use this command in a MicroK8s environment, you need to prepend the command with microk8s. By using kubectl, you can create and delete resources, autoscale a set of Pods and see the logs.
If you enter microk8s.kubectl, it will show what parameters can be used with it (Figure 1). For a full explanation of the parameters, check out the "Overview of kubectl" reference page.
You can verify that services are up and running by entering microk8s.kubectl get along with the type, names and other flags. Figure 2 shows the output of using kubectl with various parameters.
Users of K8s have historically used the command line to monitor and manage their environments, which made sense; K8s is all about automation, and scripts are used for much of this automation. However, we've recently seen a plethora of GUIs emerging to manage and monitor K8s environments. The GUI that comes with MicroK8s is Dashboard, which is very easy to install, but does have a few gotchas of which you need to be aware.
To enable the dashboard and the DNS service, enter microk8s.enable dns dashboard ingress. After doing this, you can enter microk8s.kubectl get all to see that various services have been started (Figure 3).
Moreover, if you enter ifconfig, you'll see that a lot of interfaces have been added to your system. As the K8s environment has a unique IP addressing scheme, you'll need to set up a proxy to pass requests to access the Dashboard, which you can do by entering microk8s.kubectl proxy --accept-hosts=.* --address=0.0.0.0 &. Note that the & at the end of this command string will run the command in the background.
You can then enter the following in a Web browser to access the Dashboard (Figure 4):
I selected SKIP and was presented with a GUI for my K8s environment (Figure 5).
The basic building block in K8s is the Pod, which encapsulates one or more containers. Each Pod contains resources, such as storage and a unique network IP, and has options that govern how the container should run in the K8s environment. The container needs a runtime engine; Docker is the most common container runtime used in a Pod, but Pods can use other container runtime engines, such as CoreOS rkt, if desired.
Although single-container Pods are the most popular, a Pod might also encapsulate an application composed of multiple tightly coupled containers that need to form a single cohesive unit of service; for example, one container in the Pod might be serving files from a shared volume to the public, while another or sidecar container in the same Pod might refresh or update those files. By using Pods that have multiple containers and storage resources, you can deploy and manage them as a single entity. Figure 6 shows examples of how Pods can be composed of one or more applications and/or shared resources.
From the Dashboard, I could verify two different Pods now running in my environment (Figure 7).
You can obtain this same Pod information from the command line by entering microk8s.kubectl get pods (Figure 8).
To see all of the containers in my environment, I entered microk8s.kubectl get service --all-namespaces (Figure 9).
You can use the command line to get the same information as the Dashboard. For example, you can see Pod logs by entering microk8s.kubectl logs nginx-ingress-microk8s-controller-hwkb6 (Figure 10).
In this second article in a series on K8s, I showed you how to monitor and manage your K8s by using the command line and a GUI using MicroK8s. In the next article, I'll show you how I deployed multiple Pods.
Tom Fenton works in VMware's Education department as a Senior Course Developer. He has a wealth of hands-on IT experience gained over the past 20 years in a variety of technologies, with the past 10 years focused on virtualization and storage. Before re-joining VMware, Tom was a Senior Validation Engineer with The Taneja Group, were he headed their Validation Service Lab and was instrumental in starting up its vSphere Virtual Volumes practice. He's on Twitter @vDoppler.