Kubernetes is complex to learn, deploy and manage. But it is also a powerful container orchestration engine for automating deployment, scaling and management of containerized application. So the way forward is to make Kubernetes easier.
Here's a list of 7 open-source GitHub projects to help you in your Kubernetes journey:
1. Minikube
β Github stars: 23.4k
Most of us know this one. Minikube implements a local Kubernetes cluster on macOS, Linux, and Windows for you to practice and learn.
kubernetes / minikube
Run Kubernetes locally
minikube
minikube implements a local Kubernetes cluster on macOS, Linux, and Windows. minikube's primary goals are to be the best tool for local Kubernetes application development and to support all Kubernetes features that fit.
Features
minikube runs the latest stable release of Kubernetes, with support for standard Kubernetes features like:
-
LoadBalancer - using
minikube tunnel
- Multi-cluster - using
minikube start -p <name>
-
NodePorts - using
minikube service
- Persistent Volumes
- Ingress
-
Dashboard -
minikube dashboard
-
Container runtimes -
minikube start --container-runtime
- Configure apiserver and kubelet options via command-line flags
- Supports common CI environments
As well as developer-friendly features:
- Addons - a marketplace for developers to share configurations for running services on minikube
- NVIDIA GPU support - for machine learning
- AMD GPU support - for machine learning
- Filesystem mounts
For more information, see the official minikube website
Installation
See the Getting Started Guide
π£ Please fill out our fast 5-question survey soβ¦
2. kube-state-metrics
β Github stars: 3.6k
kube-state-metrics (KSM) is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects. It exposes raw data unmodified from the Kubernetes API. You can use it to monitor details like state of nodes, pods and jobs.
kubernetes / kube-state-metrics
Add-on agent to generate and expose cluster-level metrics.
Overview
kube-state-metrics (KSM) is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects. (See examples in the Metrics section below.) It is not focused on the health of the individual Kubernetes components, but rather on the health of the various objects inside such as deployments, nodes and pods.
kube-state-metrics is about generating metrics from Kubernetes API objects without modification. This ensures that features provided by kube-state-metrics have the same grade of stability as the Kubernetes API objects themselves. In turn, this means that kube-state-metrics in certain situations may not show the exact same values as kubectl, as kubectl applies certain heuristics to display comprehensible messages. kube-state-metrics exposes raw data unmodified from the Kubernetes API, this way users have all the data they require and perform heuristics as they see fit.
The metrics are exported on the HTTP endpoint /metrics
onβ¦
3. Kubernetes Dashboard
β Github stars: 10.9k
Kubernetes Dashboard is a general purpose, web-based UI for Kubernetes clusters provided by Kubernetes. It allows users to manage applications running in the cluster and troubleshoot them, as well as manage the cluster itself.
To deploy Dashboard, execute following command:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
kubernetes / dashboard
General-purpose web UI for Kubernetes clusters
Kubernetes Dashboard
Introduction
Kubernetes Dashboard is a general purpose, web-based UI for Kubernetes clusters. It allows users to manage applications running in the cluster and troubleshoot them, as well as manage the cluster itself.
As of version 7.0.0, we have dropped support for Manifest-based installation. Only Helm-based installation is supported now. Due to multi-container setup and hard dependency on Kong gateway API proxy it would not be feasible to easily support Manifest-based installation.
Additionally, we have changed the versioning scheme and dropped appVersion
from Helm chart. It is because, with a multi-container setup, every module is now versioned separately. Helm chart version
can be considered an app version now.
Installation
Kubernetes Dashboard supports only Helm-based installation currently as it is faster and gives us better control over all dependencies required by Dashboard to run. We now use a single-container, DBless Kong installation as a gateway that connects all our containersβ¦
4. KOPS
β Github stars: 13.8k
KOPS stands for Kubernetes operations, an open-source project used to set up production-ready Kubernetes clusters very easily and quickly. It can help you create, destroy, upgrade and Kubernetes cluster, and can also provision the necessary cloud infrastructure.
kubernetes / kops
Kubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management
kOps - Kubernetes Operations
The easiest way to get a production grade Kubernetes cluster up and running.
What is kOps?
We like to think of it as kubectl
for clusters.
kops
will not only help you create, destroy, upgrade and maintain production-grade, highly
available, Kubernetes cluster, but it will also provision the necessary cloud infrastructure.
AWS (Amazon Web Services) and GCP (Google Cloud Platform) are currently officially supported, with DigitalOcean, Hetzner and OpenStack in beta support, and Azure in alpha.
Can I see it in action?
Installing and launching a Kubernetes cluster hosted on AWS, GCE, DigitalOcean, Hetzner, OpenStack, Azure
See Getting Started
Documentation
Documentation is in the /docs
directory, and can be seen at kops.sigs.k8s.io.
Releases and kubernetes Release Compatibility
Getting Involved and Contributing
See Contributing
Office Hours
kOps maintainers set aside one hour every other week for public office hours. This time isβ¦
5. Kubespray
β Github stars: 11.9k
Kubespray is used for Kubernetes cluster lifecycle management. It works with public cloud, on-premises, bare-metal, and test environment solutions.
kubernetes-sigs / kubespray
Deploy a Production Ready Kubernetes Cluster
Deploy a Production Ready Kubernetes Cluster
If you have questions, check the documentation at kubespray.io and join us on the kubernetes slack, channel #kubespray You can get your invite here
- Can be deployed on AWS, GCE, Azure, OpenStack, vSphere, Equinix Metal (bare metal), Oracle Cloud Infrastructure (Experimental), or Baremetal
- Highly available cluster
- Composable (Choice of the network plugin for instance)
- Supports most popular Linux distributions
- Continuous integration tests
Quick Start
Below are several ways to use Kubespray to deploy a Kubernetes cluster.
Ansible
Usage
Install Ansible according to Ansible installation guide then run the following steps:
# Copy ``inventory/sample`` as ``inventory/mycluster``
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters under ``inventory/mycluster/group_vars``
cat inventory/mycluster/group_vars/all/all.yml
cat
β¦6. K9s
β Github stars: 15.5k
K9s provides a terminal UI to interact with your Kubernetes clusters. It makes it easier to navigate, observe and manage your applications with the terminal.
K9s - Kubernetes CLI To Manage Your Clusters In Style!
K9s provides a terminal UI to interact with your Kubernetes clusters The aim of this project is to make it easier to navigate, observe and manage your applications in the wild. K9s continually watches Kubernetes for changes and offers subsequent commands to interact with your observed resources.
Note...
K9s is not pimped out by a big corporation with deep pockets. It is a complex OSS project that demands a lot of my time to maintain and support. K9s will always remain OSS and therefore free! That said, if you feel k9s makes your day to day Kubernetes journey a tad brighter, saves you time and makes you more productive, please consider sponsoring us! Your donations will go a long way in keeping our servers lights on and beers in our fridge!
Thank you!
Screenshots
Demo Videos/Recordings
- K9sβ¦
7. Popeye
β Github stars: 3.3k
Popeye is a utility that scans live Kubernetes cluster and reports potential issues with deployed resources and configurations. It is a readonly tool, it does not alter any of your Kubernetes resources.
Popeye: Kubernetes Live Cluster Linter
Popeye is a utility that scans live Kubernetes clusters and reports potential issues with deployed resources and configurations As Kubernetes landscapes grows, it is becoming a challenge for a human to track the slew of manifests and policies that orchestrate a cluster Popeye scans your cluster based on what's deployed and not what's sitting on disk. By linting your cluster, it detects misconfigurations, stale resources and assists you to ensure that best practices are in place, thus preventing future headaches. It aims at reducing the cognitive overload one faces when operating a Kubernetes cluster in the wild. Furthermore, if your cluster employs a metric-server, it reports potential resources over/under allocations and attempts to warn you should your cluster run out of capacity.
Popeye is a readonly tool, it does not alter any of your Kubernetes resources in any way!
Screenshots
Console
JSON
HTML
Youβ¦
I hope you enjoyed this list. I will be coming up with more such amazing resources soon.
We share more DevOps content on our Twitter handle. If you liked this, let's be friends on Twitter π
A sneak peek of our tweets π
Top comments (1)
Check out keda if you have a chance.