In the past few years, the popularity of Kubernetes and its supporting ecosystem have skyrocketed. Developing and managing applications in this scalable environment has raised several new challenges, such as management of a large number of independent nodes and microservices, monitoring the health of workloads, and ensuring optimal utilization of resources. Here are some popular and reliable tools that can help you manage your Kubernetes deployments, providing firm control over the ever-growing environment.
kOps (shortened form of Kubernetes Operations) is a set of tools that helps users create, destroy, upgrade, maintain, and manage production-grade Kubernetes clusters. kOps tools are specifically created by the Kubernetes on AWS community and are considered as the quickest way to get a fully functional cluster ready.
kOps are multi-architecture ready with ARM64 support. It is built on a state-sync model for dry-runs and automatic idempotency. It helps automate the provisioning of highly available Kubernetes clusters and supports zero-config managed cluster add-ons. It can generate Terraform configurations (a declarative coding tool). In addition, its features include command line autocompletion, YAML manifest-based API configuration, templating, and dry-run modes for creating manifests. It has the capability to add containers, as hooks, and files to nodes via a cluster manifest.
The kOps CLI enables users to create a highly available cluster with multiple master nodes spread across multiple availability zones, and workers can also be spread across multiple zones. A few of the tasks that happen behind the scenes during cluster creation are provisioning EC2 instances, setting up AWS resources such as auto-scaling groups, IAM users, networks, and security groups, and installing Kubernetes.
kOps is considered the best tool for deploying small production-grade clusters.
Kubespray is an automation tool. It can help automate the provisioning of Kubernetes with Ansible, the renowned IT automation engine. It enables faster and flexible deployment of Kubernetes clusters while allowing customization of the implementation process. Kubespray can be described as a combination of Kubernetes and Ansible. It runs on bare metal and most cloud services and supports almost all popular Linux distributions, including Ubuntu, CentOS, Debian, Fedora, OpenSUSE, and Flatcar.
It can make the deployment process very easy — users may need to run just one Ansible playbook to deploy the cluster. Then based on requirements, additional components can be plugged in, including additional Ansible playbooks or provisioning tools. Kubespray can also work with existing Ansible deployments. Other deployment tools like kOps do not provide such flexibility as they perform the orchestration and provisioning by themselves. However, kOps provides tighter integration with the platforms it supports. So, organizations requiring integration with a single platform may prefer to use kOps, while for integration with multiple environments, Kubespray is preferred.
Kubebspray can perform basic configuration management tasks using Ansible OS operators. For lifecycle management domain knowledge, it supports integration with Kubeadm. Kubeadm provides strong support for Kubernetes lifecycle management features like dynamic discovery services and self-hosted layouts. Kubespray supports Kubeadm v2.3 and later.
Kubernetes Operational View (Kube-ops-view) is free software that helps with understanding the cluster setup in a visual way. It gives a common operational picture for multiple Kubernetes clusters. The software offers a read-only system dashboard for multiple K8s clusters.
Kube-ops-view shows node capacity and resource usage monitoring of CPU, memory, and disk. It renders individual pods and indicates pod status by borderline color. Each color represents pod status. Constant green indicates it is running and all containers ready; flashing green means running and not all containers are ready; flashing yellow highlights pending or container creation is in progress, flashing red means there is an error; blue is for successful execution of jobs status. It also provides tooltip information for nodes and pods and animates pod creation and termination.
Kube-ops-view helps in filtering pods by name and labels. The ports can be sorted by different properties such as pod name (default), age (start time), memory usage (metric collected from Heapster), CPU usage (metric collected from Heapster). In addition, sorting by the CPU and memory allows users to point out the pods consuming the most resources.
Kube-ops-view lacks some features as this does not work as a replacement for the Kubernetes Dashboard. It is neither a monitoring solution nor an operation management tool. So, it does not allow interacting with the actual cluster.
K9s is a Kubernetes CLI to manage and view clusters. Its terminal-based UI is used to interact with clusters. The K9s project makes it easier to navigate, observe and manage the deployed applications in the wild. K9s continually observes Kubernetes for changes and offers subsequent commands to interact with the observed resources. It is available on Linux, macOS, and Windows platforms. It uses aliases to navigate most K8s resources.
K9s tracks real-time activities of resources running in Kubernetes clusters and provides instant information. It handles both Kubernetes standard resources as well as custom resource definitions (CRD). It also tracks real-time metrics associated with resources such as containers, nodes, and pods. It provides standard cluster management commands such as logs, port-forwards, restarts, and scaling.
Users can define their own command shortcuts for quick navigation via command aliases and hotkeys. It offers plugin support to extend K9s to create custom cluster commands. K9s has a powerful filtering mode that allows users to drill down and view workload-related resources. Its error zoom feature enables users to drill down directly to the problem with cluster’s resources.
K9s is skinnable and customizable as users can customize or arrange which columns to display on a per resource basis. It also provides toggles to view minimal or full resource definitions. It also has features such as built-in benchmarking, RBAC support, reverse lookup to asserts, resource graph traversals, and multi resources views via Pulses and XRay views.
K9sAlpha (aka Alpha) is the next generation of Kubernetes utilities. Along with K9s’ features, K9sAlpha also contains additional features and enhancements.
5. Kontena Lens
Kontena Lens, an integrated development environment (IDE) for managing Kubernetes clusters, is a desktop application used by developers to build and deploy applications on Kubernetes clusters. It provides insights about various statistics, events, and log streams, giving real-time visibility of the cluster.
This standalone application can be installed on Windows, Linux, and macOS desktops, and there is no need for any installation on the cluster. It also supports various Kubernetes flavors, including k3s, AKS, EKS, GKE, Rancher, Minikube, OpenShift, and more. Users can directly import the kubeconfigs for the required cluster and start working.
Lens consists of a smart terminal, which is a context-aware display of information. It can automatically assign and adjust the context of kubeconfig to provide details of the Kubernetes cluster currently selected. It can also sync the installed version of kubctl to match the APIs versions used in the current cluster. The smart terminal is also integrated with Helm, allowing the use of all publicly available Helm charts for faster deployment.
Lens also provides built-in integration with the Prometheus monitoring service. This allows users to visualize the resource usage metrics, including the usage and availability of CPU, memory, and disk capacity. Users can use pre-built Lens extensions that provide additional custom functionalities, or even create their own extensions to develop workflows with other supporting technologies.
In August 2020, Lens was acquired by Mirantis.
Manage Kubernetes — even as it changes
With an accelerated rise in the adoption of Kubernetes and its supporting artifacts, the process of operating container-based workloads and managing the resources is also continuously evolving. In such scenarios, using the right tool can help keep pace with these dynamically changing variables and help with your expansion into the new realms of container technology.
Featured image: Pexels