Kubernetes is a powerful platform that has shifted the way modern software operates and scales over the past five years. It’s got a strong open source community and benefits from innovation from the collective.
Also, some of its current shortcomings are: difficulties in installation, complexity, and customization. In many ways, Kubernetes is like the Linux kernel: it provides a framework for running software, but none of the tools.
This is where Kubernetes distributions (or distros) come in. Kubernetes distro package useful tools such as installers, control panels, and additional modules that aren’t included in Kubernetes. They also let you swap out components such as networking services and container runtimes without having to dig deep into Kubernetes’ internals. In this article, we’ll look at several of the more popular Kubernetes distros and the benefits they offer over regular Kubernetes.
Docker and Kubernetes have a rather symbiotic relationship. Kubernetes is commonly used to orchestrate Docker containers, and with the Docker Kubernetes Service (DKS), you can deploy and manage Kubernetes clusters using the Docker platform.
A key focus of DKS is creating consistency between Kubernetes environments using YAML configuration files, Helm charts, and Docker Compose. This means that a developer can safely deploy an application to a bare metal test cluster as well as a hybrid cloud production cluster. DKS also adds role-based access controls (RBAC), a private container registry, encrypted networking using TLS, and multi-tenancy.
Sending Docker Logs to LogDNA
You can use LogDNA’s fork of Logspout to send docker container logs to easily send logs to LogDNA. You can find instructions in our docs to set it up on for Docker, Docker Cloud and ECS. Also you can check our GitHub repo.
Red Hat’s OpenShift is an open source platform built on the Origin Community Distribution (OKD for short), which is itself based on upstream Kubernetes. OKD enhances Kubernetes by adding a new web console, a more powerful command-line client, multi-tenancy support, and tools for deploying high-availability clusters. OpenShift uses Ansible to automate the deployment process, and it can be installed to bare metal servers or cloud services.
OpenShift takes OKD and packages it alongside other projects such as the Istio service mesh, Prometheus for monitoring, and the Elastic Stack for logging. It includes the source-to-image (S2I) framework, which uses self-assembling container images to package and deploy source code. This lets developers run code without having to build their own images. With Red Hat’s purchase of CoreOS, OpenShift is also gaining features from Tectonic including automated updates, Operators, and the Quay container registry.
OpenShift comes in several variants depending on where and how you want to deploy it:
- OpenShift Online: a fully managed public cloud offering for quickly deploying applications
- OpenShift Dedicated: a fully managed private cloud OpenShift cluster hosted on AWS
- OpenShift Container Platform: an enterprise OpenShift cluster that you deploy to your own infrastructure
You can find a full comparison of Kubernetes, OKD, and OpenShift on the OpenShift website.
Sending OpenShift Logs to LogDNA
If you are using or are planning to use OpenShift, deploying the LogDNA agent requires a few additional steps.
Using the oc command, we’ll create a new project and service account for the agent before deploying the DaemonSet. Make sure to replace <YOUR LOGDNA INGESTION KEY> with your actual ingestion key:
$ oc adm new-project --node-selector='' logdna-agent $ oc project logdna-agent $ oc create serviceaccount logdna-agent $ oc adm policy add-scc-to-user privileged system:serviceaccount:logdna-agent:logdna-agent $ oc create secret generic logdna-agent-key --from-literal=logdna-agent-key= <YOUR LOGDNA INGESTION KEY> $ oc create -f https://raw.githubusercontent.com/logdna/logdna-agent/master/logdna-agent-ds-os.yml
Like the standard Kubernetes DaemonSet, this DaemonSet automatically installs the agent to each node in the cluster; collects all container and node logs; and adds metadata such as the container name, Pod name, project namespace, and host. To learn more, visit the LogDNA agent GitHub page.
Rancher aims to provide the features of a commercial Kubernetes distribution in an open source package. Its claim to fame is the ability to easily create clusters on bare metal servers (using Rancher Kubernetes Engine) as well as hosted providers such as AKS and GKE. Simply install Docker onto your hosts, define your cluster configuration in YAML, and run rke up to deploy it. Rancher can also import existing upstream Kubernetes clusters created by tools such as Kops, KubeSpray, and even other distros such as OpenShift.
RKE is entirely container-based, making it easy to modify or scale your cluster on demand. Rancher also adds role-based access controls (RBAC), integration with a number of authentication systems, multiple private registries, automatic etcd backups, automated certificate management, and many pluggable add-ons.
Rancher doesn’t aim to redefine Kubernetes, but rather make it easier to deploy and use.
Mesosphere Kubernetes Engine (MKE) is a fairly new project announced in late 2018. It adds an official Kubernetes runtime to Apache Mesosphere, featuring upstream Kubernetes and a control plane for managing multiple Kubernetes clusters. One of its key features is High Density Multi-Kubernetes (HDMK), which lets you host multiple isolated Kubernetes clusters on the same nodes. MKE also aims to provide self-healing cluster components, one-click scaling and upgrading, networking using Calico, and encrypted communication between components.
MKE runs on DC/OS, making it easy to deploy and manage on top of existing DC/OS clusters.
Pivotal Container Service (PKS) is an upstream Kubernetes project that focuses on high availability. It uses BOSH—a toolchain for deploying and managing distributed systems and applications—to provide stability and reliability in the underlying cluster. Not only does BOSH monitor and manage Kubernetes processes, but it also monitors your nodes, providing failure safety, recovery, and scalability at the VM level.
In addition to BOSH, PKS also includes a private registry service called Harbor, which supports both container images and Helm charts, vulnerability scanning, and access controls. PKS also integrates with a number of VMware tools like NSX-T for encrypted networking, vRealize Operations Manager for monitoring and managing systems, and Wavefront for collecting metrics. Pivotal also provides a marketplace for installing add-ons and integrations.
PKS comes in three tiers:
- Essential PKS for deploying and managing your own clusters
- Enterprise PKS for automated deployments using BOSH, Harbor, and other tools
- Cloud PKS for fully managed, hosted clusters
This is by no means an exhaustive list, but it covers most of the more popular providers. There are dozens of other tools designed to simplify Kubernetes management including OpenStack, Apache CloudStack, Charmed Kubernetes, Heptio Kubernetes Subscription, and SUSE CaaS Platform.
If you’re not sure which solution works best for you, consider your use case. Are you running a small deployment with just a few applications? If so, consider Rancher or OpenShift Container Platform. Are you running a large number of applications, or running business-critical applications? If so, consider a high-availability distro like Enterprise PKS, MKE, or OpenShift Dedicated.