{"id":6291,"date":"2019-05-28T09:32:41","date_gmt":"2019-05-28T02:32:41","guid":{"rendered":"http:\/\/54.151.235.32\/?p=6291"},"modified":"2024-12-05T15:34:49","modified_gmt":"2024-12-05T08:34:49","slug":"10-open-source-tools-that-make-kubernetes-better","status":"publish","type":"post","link":"https:\/\/renovacloud.com\/en\/10-open-source-tools-that-make-kubernetes-better\/","title":{"rendered":"10 Open-Source Tools That Make Kubernetes Better"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Take advantage of these Kubernetes companions to simplify app definitions, enhance monitoring, ease cloud deployments, and more.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kubernetes has become a standard way\u2014many would say\u00a0<\/span><i><span style=\"font-weight: 400;\">the<\/span><\/i><span style=\"font-weight: 400;\">\u00a0standard way \u2014\u00a0to deploy containerized applications at scale. But if Kubernetes helps us to tame sprawling and complex container deployments, what\u2019s available to help us tame Kubernetes? It too can be complex, messy, and difficult to manage.\u00a0<\/span><span style=\"font-weight: 400;\">As Kubernetes grows and evolves, it is likely that some of its excesses will be tamed from within. But some people aren\u2019t waiting around for Kubernetes to get any easier to work with, and have rolled their own solutions to many common problems with Kubernetes in production.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here we highlight 10 open-source projects and third-party tools that simplify Kubernetes in various ways, from easing command-line interactions, to simplifying application deployment syntax, to integrating with AWS, to providing a window into multiple clusters.<\/span><\/p>\n<h2><b>Bitnami Cabin: Kubernetes dashboard for iOS and Android<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">No modern web application or service should be without some kind of mobile interface.\u00a0<\/span><a href=\"https:\/\/github.com\/bitnami-labs\/cabin\" rel=\"noopener\"><span style=\"font-weight: 400;\">Cabin<\/span><\/a><span style=\"font-weight: 400;\">\u00a0provides Kubernetes admins with a version of the Kubernetes dashboard that is accessible from an iOS or Android smartphone. Many of the functions available in the full Kubernetes dashboard can be launched from Cabin, including Helm charts, scaling deployments, reading pod logs, and accessing web-based apps hosted by Kubernetes.<\/span><\/p>\n<h2><b>Goldpinger: Visualize Kubernetes Clusters<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Humans are visual creatures. Graphs and charts make it easier for us to understand the big picture. And given the scope and complexity of a Kubernetes cluster, we could use all of the visual help we can get.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The amusingly-named\u00a0<\/span><a href=\"https:\/\/github.com\/bloomberg\/goldpinger\" rel=\"noopener\"><span style=\"font-weight: 400;\">Goldpinger<\/span><\/a><span style=\"font-weight: 400;\">, open sourced by Bloomberg\u2019s tech division, is a simple tool that runs inside a Kubernetes cluster and displays an interactive map of the relationships between the nodes. Healthy nodes appear in green, and unhealthy nodes in red. Just click on a node for details. You can customize the API with Swagger to roll in additional reporting, metrics, or other integrations.<\/span><\/p>\n<h2><b>Gravity: Portable Kubernetes Clusters<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">If you want to deploy an application into Kubernetes, many apps have Helm charts to guide and automate the process. But what if you want to take a Kubernetes cluster\u00a0<\/span><i><span style=\"font-weight: 400;\">as is<\/span><\/i><span style=\"font-weight: 400;\">\u00a0and deploy it somewhere?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">takes snapshots of Kubernetes clusters, their container registries, and their running applications, called \u201capplication bundles.\u201d The bundle, which is just a .tar file, can replicate the cluster anywhere Kubernetes runs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gravity also ensures that the target infrastructure can support the same behavioral requirements as the source, and that the Kubernetes runtime on the target is also up to snuff. The enterprise version of Gravity adds security features including role-based access controls and the ability to synchronize security configurations across multiple cluster deployments.<\/span><\/p>\n<h2><b>K9s: Full-screen Kubernetes CLI UI<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Admins love \u201csingle pane of glass\u201d utilities.\u00a0<\/span><a href=\"https:\/\/github.com\/derailed\/k9s\" rel=\"noopener\"><span style=\"font-weight: 400;\">K9s<\/span><\/a><span style=\"font-weight: 400;\">\u00a0is a full-screen CLI UI for Kubernetes clusters. It gives you views of running pods, logs, and deployments at a glance, along with quick access to a shell. Note that you will need to grant users Kubernetes read privileges at the user and namespace level for K9s to work properly.<\/span><\/p>\n<h2><b>Kaniko: Build Containers In A Kubernetes Cluster<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Most container images are built on a system outside of a container stack. Sometimes, though, you want to perform the build process\u00a0<\/span><i><span style=\"font-weight: 400;\">inside<\/span><\/i><span style=\"font-weight: 400;\">\u00a0a container stack \u2014 e.g., within a running container or somewhere on a Kubernetes cluster.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/GoogleContainerTools\/kaniko\" rel=\"noopener\"><span style=\"font-weight: 400;\">Kaniko<\/span><\/a><span style=\"font-weight: 400;\">\u00a0performs container builds inside a container environment, but without relying on a container daemon like Docker to do its work. Kaniko takes the base image, extracts the file system, then executes all of the build commands in user space atop the extracted file system, taking a snapshot of the file system after each command.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Note that Kaniko currently cannot build Windows containers.<\/span><\/p>\n<h2><b>Kedge: Concise Kubernetes deployment definitions<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The most common complaint about Kubernetes is how complex and verbose its manifests, or application definitions, are. They\u2019re a pain to write and a pain to maintain, so it\u2019s little wonder folks turn to third-party tools for relief.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/kedgeproject\/kedge\" rel=\"noopener\"><span style=\"font-weight: 400;\">Kedge<\/span><\/a><span style=\"font-weight: 400;\">\u00a0offers a simpler, more concise syntax. You provide the simple version of the Kubernetes definition file to Kedge, and Kedge expands that simple definition into its full-blown Kubernetes counterpart. Unlike Koki Short (see below), Kedge doesn\u2019t use a modular syntax for its declaration files; it just boils down application definitions to common shortcuts.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Note that the last release of Kedge was dated April 2018.<\/span><\/p>\n<h2><b>Koki Short: Manageable Kubernetes Manifests<\/b><\/h2>\n<p><a href=\"https:\/\/github.com\/koki\/short\" rel=\"noopener\"><span style=\"font-weight: 400;\">Koki Short<\/span><\/a><span style=\"font-weight: 400;\">\u2014like Kedge above\u2014is a project to improve the way application definitions, or manifests, work in Kubernetes. Like Kedge definitions, Short definitions use an abbreviated syntax for describing Kubernetes pods that can be translated into the full-blown syntax and back again. Unlike Kedge definitions, Short definitions are also modular, meaning details from one Short declaration can be re-used in others, so that many pods with common elements can be defined succinctly.<\/span><\/p>\n<h2><b>Kops: Command-line Ops For Kubernetes Clusters<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Developed by the Kubernetes team,\u00a0<\/span><a href=\"https:\/\/github.com\/kubernetes\/kops\" rel=\"noopener\"><span style=\"font-weight: 400;\">Kops<\/span><\/a><span style=\"font-weight: 400;\">\u00a0allows you to manage Kubernetes clusters from the command line. It supports clusters running on AWS and GCE, with VMware vSphere and other environments in the works. In addition to automating the setup and teardown process, Kops helps with other\u00a0<\/span><i><span style=\"font-weight: 400;\">kinds\u00a0<\/span><\/i><span style=\"font-weight: 400;\">of automation. For instance, it can generate Terraform configurations to allow a cluster to be redeployed using Terraform.<\/span><\/p>\n<h2><b>Kubecost: Cost Metrics For Running Kubernetes<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Most Kubernetes administration tools focus on ease of use, monitoring, insight into pod behaviors, and the like. But what about monitoring the costs \u2014 as in the dollars and cents \u2014 associated with running Kubernetes?<\/span><\/p>\n<p><a href=\"https:\/\/kubecost.com\/\" rel=\"noopener\"><span style=\"font-weight: 400;\">Kubecost<\/span><\/a><span style=\"font-weight: 400;\">\u00a0uses real-time Kubernetes metrics, and real-world cost information derived from running clusters on the major cloud providers, to provide a dashboard view of the monthly cost of each cluster deployment. Costs for memory, CPU, GPU, and storage are all broken out by Kubernetes component (container, pod, service, deployment, etc.).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kubecost can also track the costs of \u201cout of cluster\u201d resources, such as S3 buckets, although this is currently limited to AWS. Cost data can even be shared back to Prometheus, so you can use the data to programmatically alter cluster behavior.<\/span><\/p>\n<h2><b>KubeDB: Run Production Databases In Kubernetes<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Databases have always been difficult to run elegantly in Kubernetes. And the native Kubernetes feature set doesn\u2019t directly address many of the specific problems with databases.<\/span><\/p>\n<p><a href=\"https:\/\/kubedb.com\/\" rel=\"noopener\"><span style=\"font-weight: 400;\">KubeDB<\/span><\/a><span style=\"font-weight: 400;\">\u00a0allows an admin to create Kubernetes operators for managing databases. Running backups, cloning, monitoring, snapshotting, and declaratively creating databases are all part of the mix. Clustering is also supported, but only on some databases\u2014e.g., it\u2019s available for PostgreSQL but not MySQL (yet).\u00a0<\/span><\/p>\n<h2><b>Kube-shell: Shell For The Kubernetes CLI<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The Kubernetes command line is powerful, but as with any command line app, picking through its options can be tedious.\u00a0<\/span><a href=\"https:\/\/github.com\/cloudnativelabs\/kube-shell\" rel=\"noopener\"><span style=\"font-weight: 400;\">Kube-shell<\/span><\/a><span style=\"font-weight: 400;\">\u00a0wraps the standard Kubernetes command line in an integrated shell that provides auto-completion and auto-suggestion of common commands, including suggestions provided by the Kubernetes server (e.g., for the names of services). It also gives you a more robust command history function, a\u00a0<\/span><span style=\"font-weight: 400;\">vi<\/span><span style=\"font-weight: 400;\">-style editing mode, and running context information for user, namespace, cluster, and other installation-specific details.<\/span><\/p>\n<h2><b>Kubespy: Real-time Monitoring Of Kubernetes Resources<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Pulumi\u2019s\u00a0<\/span><a href=\"https:\/\/github.com\/pulumi\/kubespy\" rel=\"noopener\"><span style=\"font-weight: 400;\">Kubespy<\/span><\/a><span style=\"font-weight: 400;\">\u00a0is a diagnostic tool that allows you to trace changes to a Kubernetes resource in real time, providing you with a kind of text-view dashboard of the goings-on. For instance, you could\u00a0<\/span><a href=\"https:\/\/blog.pulumi.com\/kubespy-and-the-lifecycle-of-a-kubernetes-pod-in-four-images\" rel=\"noopener\"><span style=\"font-weight: 400;\">watch the changes to a pod\u2019s status<\/span><\/a><span style=\"font-weight: 400;\">\u00a0as it is booted up: the pod definition being written to Etcd, the pod being scheduled to run on a node, the Kubelet on the node creating the pod, and the pod finally being marked as running. Kubespy can run as a standalone binary or as a plug-in to Kubectl.<\/span><\/p>\n<h2><b>Kubernetes Ingress Controller For AWS<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Kubernetes provides external load balancing and network services to a cluster through a service called\u00a0<\/span><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress\/\" rel=\"noopener\"><span style=\"font-weight: 400;\">Ingress<\/span><\/a><span style=\"font-weight: 400;\">. Amazon Web Services provides load balancing functionality, but doesn\u2019t automatically couple these services to Kubernetes\u2019 facilities for same. The\u00a0<\/span><a href=\"https:\/\/github.com\/zalando-incubator\/kube-ingress-aws-controller\" rel=\"noopener\"><span style=\"font-weight: 400;\">Kubernetes Ingress Controller for AWS<\/span><\/a><span style=\"font-weight: 400;\">\u00a0closes that gap. The Ingress Controller manages AWS resources for each Ingress object in a cluster automatically, creating load balancers for new ingress resources and deleting load balancers for removed ones, drawing on AWS CloudFormation to ensure the consistent state of the cluster. It also auto-manages other elements used in the cluster like SSL certificates and EC2 Auto Scaling Groups.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Take advantage of these Kubernetes companions to simplify app definitions, enhance monitoring, ease cloud deployments, and more. Kubernetes has become a standard way\u2014many would say\u00a0the\u00a0standard way \u2014\u00a0to deploy containerized applications at scale. But if Kubernetes helps us to tame sprawling and complex container deployments, what\u2019s available to help us tame Kubernetes? It too can be [&#8230;]\n","protected":false},"author":7,"featured_media":6292,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[35,347,182,351],"class_list":["post-6291","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-and-analytics","tag-aws","tag-gcp-en","tag-k9","tag-kubernetes-en"],"_links":{"self":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts\/6291","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/comments?post=6291"}],"version-history":[{"count":2,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts\/6291\/revisions"}],"predecessor-version":[{"id":27423,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts\/6291\/revisions\/27423"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/media\/6292"}],"wp:attachment":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/media?parent=6291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/categories?post=6291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/tags?post=6291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}