Tools for using Kubernetes
By: Vimarsh Karbhari
Tags: Containers, Data Science, Artificial Intelligence, Technology, Data Engineering

Tools for using Kubernetes

Tools for a team of any level to realize a container architecture.

Kubernetes, the container orchestration tool originally developed by Google, has become a defacto for Agile and DevOps teams. With the advance of ML, Kubernetes has become even more important for an organization.

Here, we have summed up a list of tools which can be used to realize a container architecture for different phases and maturity levels for enterprise organizations.

Kubectl

The most important area for Devops is command line. Kubectl is the command line tool for Kubernetes that controls the Kubernetes cluster manager. Under Kubectl, there are several subcommands for more precise cluster management control, such as converting files between different API versions, or executing container commands. It is also the basis of many other tools in the ecosystem.

kuttle: kubectl wrapper — Kubernetes wrapper for sshuttle

kubectl sudo — kubernetes cmd with the security privileges of another user

mkubectx — single command across for all your selected kubernetes contexts

Kubectl-debug — Debugging the pod by a new container with troubleshooting tools pre-installed

Minikube

The next important area is development. Minikube is a great Kubernetes tool for development and testing. Minikube is used by teams to get started on and build POCs using Kubernetes. It can be used to run a single-node Kubernetes cluster locally for development and testing. There are plenty of Kubernetes features supported on Minikube, including DNS, NodePorts, ConfigMaps and Secrets, Dashboards, Container Runtime (Docker, rkt, and CRI-O), enabling CNI’s, and ingress. This step-by-step guide for a quick and easy installation.

KubeDirector

Once the team has build extensively, it will need to scale out the clusters. It brings Enterprise level capabilities for Kubernetes. KubeDirector uses standard Kubernetes facilities of custom resources and API extensions to implement stateful scaleout application clusters. This approach enables transparent integration with user/resource management and existing clients and tools.

Prometheus

Each team has a need for operational metrics to define operational efficiency and ROI. Prometheus can be leveraged for providing alerting and monitoring infrastructure to Kubernetes native applications. Prometheus, a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true.

Prometheus provides the infrastructure but for metric analytics, dashboards and monitoring graphs, Grafana is used on top of Prometheus.

Skaffold

Once the team has spent time building a repeatable process for containerization with metrics and alerting, having CI/CD becomes the next phase of development. Skaffold is a command line tool that facilitates continuous development for Kubernetes applications. It helps the team to iterate on the application source code locally then deploy to local or remote Kubernetes clusters. Skaffold handles the workflow for building, pushing and deploying your application. It also provides building blocks and describes customization for a CI/CD pipeline.

CI/CD will require test automation as well. The test-infra repository contains tools and configuration files for the testing and automation needs of the Kubernetes project.

KubeFlow

Once the products gather huge amounts of data, data pipelines and data products could be build for these applications. Kubeflow is a Cloud Native platform for machine learning based on Google’s internal machine learning pipelines.