BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
Unlike most cloud offerings, managed Kubernetes services, such as Google Kubernetes Engine, are based on open source technology that was widely adopted within private infrastructures long before the cloud vendor came along.
Kubernetes has attracted a vast and growing ecosystem of developers that use a mix of tools -- some that are part of the base Kubernetes distribution, and some that are homegrown. This variety of developers and deployment environments means there is always more than one way to do things in Kubernetes, and that includes container cluster management.
This holds true in Google Kubernetes Engine, which supports several cluster management methods, including:
- Google Cloud Console: a web-based GUI;
- Google Cloud Shell: a web-based or local command shell;
- kubectl: the native Kubernetes command-line interface (CLI); and
- PowerShell with the Google Cloud Tools add-in: a way to provide the software development kit (SDK) and relevant cmdlets.
Each of these management approaches has strengths, shortcomings and stylistic quirks that make them appropriate for different audiences.
Google Cloud Platform's web console is the default interface for all management tasks and is the umbrella tool under which IT teams configure, deploy and monitor all GCP services. Unlike other services, Google Kubernetes Engine has a bifurcated management interface. Admins use the web GUIto deploy clusters, manage nodes, define role-based access controls and configure external networking features, like IP aliases, load balancing and network policy.
In contrast, admins use command-line tools, which invoke relevant APIs, to perform tasks related to the cluster's behavior -- namely, parameters internal to Kubernetes itself. On Google Kubernetes Engine, command-line access is available via:
- kubectl: A command-line tool included with the open source Kubernetes distribution for cluster management. It uses a standard Unix-style command syntax that contains four elements: a command name, a resource type, a resource name and command flags to specify options or override defaults.
- gcloud: An alternative CLI that is available via the Cloud Shell web interface or as a stand-alone package that admins can locally install as part of the Cloud SDK. Gcloud is a comprehensive management interface for GCP that IT teams use for many other resources, such as Compute Engine VMs, Cloud SQL instances and Cloud Deployment Manager templates. Gcloud syntax is similar to kubectl and has multipart commands that describe the service, command and various flags. The easiest way to use gcloud is via the web-based Cloud Console.
- PowerShell: A tool that uses Google's Cloud Tools cmdlets, including a set to create and administer Google Kubernetes Engine clusters and pods, to manage GCP resources.
Other useful management tools
Since Kubernetes is one of the most active open source projects, it has attracted developers who are willing to share their time-saving tricks and tools. The following are some of the most popular and useful tools in the Kubernetes ecosystem that are freely available on GitHub.
- Minikube: A small, local, single-node Kubernetes cluster environment designed for local installation inside a VM or laptop OS to develop and test Kubernetes applications. It supports basic Kubernetes features, like the Docker and Rkt container runtime engine, container network interface, NodePorts, domain name system and dashboards.
- kubeadm: A toolkit that facilitates the creation of Kubernetes clusters in accordance with best practices established by the Kubernetes community.
- kube-ops-view: A dashboard that provides a status overview of multiple Kubernetes clusters and shows resource usage by node and pod. Since it only provides information, not control, kube-ops-view is a supplement to Kubernetes Dashboard, which offers a full management UI.
- kube-shell: An alternative command shell for Kubernetes with several convenience and automation features, including autocompletion of commands and options with in-line documentation; autosuggestions similar to the fish shell for Linux and macOS; command history; fuzzy searching; and server-side autocompletion. The shell also has an editing mode that uses vi-style commands.
- Koki Short: A tool that simplifies the creation and management of Kubernetes manifests via a composable, reusable and modular syntax.
- Stern: A command-line tool similar to the Linux tail command that enables you to stream the output of multiple Kubernetes pods to a command shell. Its syntax supports regular expressions to enable filtering subsets by container name, and the output is color-coded by container.
- Helm: A Kubernetes package manager that's conceptually similar to Linux tools, like apt-get or yum. It simplifies the definition, installation and upgrade of containerized applications with Charts, a standard format.
Choose tools based on experience
The choice of a Google Kubernetes Engine management tool is highly personal. Here are suggestions for each.
- Cloud Console and Shell are the most convenient and best options for those new to Kubernetes and without local cluster management experience.
- Local gcloud is best for beginners who prefer to use a local command shell, like Bash or macOS Terminal.
- Kubectl is best for experienced Kubernetes administrators, since they are already familiar with the syntax and can use the same tool to manage all Kubernetes environments.
- PowerShell is ideal for Windows developers or Azure users that already use it to manage those environments.