Kubernetes distributies buiten de gebaande paden

Kubernetes is een omvangrijk open source project. Volgens gegevens van Github (https://octoverse.github.com/) zijn de twee meest bediscussieerde projecten bijvoorbeeld Kubernetes zelf en Red Hat’s OpenShift Origin (https://kubernetes.io/blog/2018/04/25/open-source-charts-2017/). Het aantal commits en contributors is zeer groot.

Bij het implementeren van Kubernetes is er – het kan ook bijna niet anders – bijzonder veel keus. Volgens de Container Native Computing Foundation zijn er 34 Kubernetes Certified Service Providers (https://www.cncf.io/certification/kcsp/).

Rondom Kubernetes is daarnaast een enorm ecosphere aan tools ontstaan, vaak van startups. Een aantal van de tools is in eerdere artikelen al voorbijgekomen, zoals Container Chaos (https://www.linkedin.com/pulse/container-chaos-niels-goossens) en Container Registries (https://www.linkedin.com/pulse/container-registries-niels-goossens). Er is genoeg over te schrijven, dus er volgt zeker nog meer.

Drie alternatieve distributies

Er is een aantal bekende Kubernetes distributies, zoals Red Hat’s OpenShift (https://www.openshift.com/), Docker Enterprise (https://www.docker.com/), Google Kubernetes Engine (https://cloud.google.com/kubernetes-engine/), CoreOS Tectonic (https://coreos.com/tectonic/) en Cloud Foundry Container Runtime (https://www.cloudfoundry.org/container-runtime/). Maar er zijn ook minder bekende distributies. In dit artikel drie alternatieven.

Rancher (https://rancher.com/)

Rancher bestaat uit twee onderdelen: een tool voor het installeren van Kubernetes en een tool voor het managen van Kubernetes clusters. Het installatietool is vrij eenvoudig en richt zich puur op het installeren van een Kubernetes cluster met Docker als container runtime.

Rancher definieert environments en clusters. Een environment is een omgeving waarbinnen applicaties of services beschikbaar zijn. De containers waarin deze applicaties of services draaien, kunnen met elkaar communiceren en een environment is zo een afgeschermd applicatielandschap. Er zijn meerdere environments naast elkaar mogelijk, maar iedere environment heeft slechts één cluster (hoewel het wel mogelijk is een cluster te delen met meerdere environments). In het cluster bevinden zich de hosts, de instanties (fysiek of virtueel) waarop de containers uiteindelijk draaien.

Het managementtool is geschikt voor het beheren van meerdere clusters, ook varianten die niet van Rancher zijn. In de web interface kan de gebruiker vervolgens hosts toevoegen aan een cluster – dat kunnen fysieke of virtuele hosts zijn, ook van verschillende providers door elkaar heen. Hoewel een Rancher installatie dus standaard wel een Kubernetes cluster installeert, is het niet nodig dat te gebruiken.

Rancher biedt ook RancherOS aan, een besturingssysteem speciaal geschreven voor containers. Alles in RancherOS is een container en het besturingssysteem bevat een minimale set aan applicaties. In RancherOS draaien twee Docker installaties: de system-docker (PID 1) waarbinnen het OS draait en de user-docker die wordt gebruikt voor het starten en draaien van containers. De package manager voor RancherOS is Docker.

Github Rancher https://github.com/rancher/rancher

Github RancherOS https://github.com/rancher/os 

Joyent Triton Kubernetes (https://www.joyent.com/triton/kubernetes)

Joyent, dat in 2016 door Samsung werd gekocht, biedt een zelf ontwikkelde public Cloud met compute en storage verspreid over meerdere, eigen Tier-1 datacenters in de VS en Europa. De Joyent enterprise software (Triton) is open source en gebouwd op het besturingssysteem SmartOS, dat weer op OpenSolaris is gebaseerd. SmartOS is een in-memory besturingssysteem dat zones biedt, een technologie die vergelijkbaar is me FreeBSD Jails: een geïsoleerd systeem met eigen resources, maar een gedeelde kernel – vergelijkbaar met containers. De KVM-implementatie van SmartOS draait in een zone, maar ook LX (een manier om Linux applicaties in een SmartOS zone te draaien zonder KVM te gebruiken).

Joyent omarmde Docker in 2015 met de lancering van Triton en heeft ondersteuning voor Kubernetes in 2017 toegevoegd. Triton biedt de mogelijkheid – vergelijkbaar met Rancher – om meerdere instanties van Kubernetes (in publieke of private Clouds) aan elkaar te knopen. Triton zorgt voor gecentraliseerde upgrades, authenticatie, RBAC, monitoring, logging en backup over de instanties heen.

Github https://github.com/joyent/triton-kubernetes

Kontena Pharos (https://www.kontena.io/enhttps://pharos.sh/)

Het Finse Kontena levert al sinds 2015 een containerplatform (met orkestratietool) dat eenvoudig te installeren is en specifiek is gericht op ontwikkelaars. Ondersteuning van Kubernetes ontbrak echter, tot de introductie van Pharos eerder dit jaar. Pharos installeert altijd de stabiele laatste versie van Kubernetes inclusief alle securitypatches en beschikt over tooling waarmee updaten naar een nieuwe versie eenvoudig uit te voeren is. Pharos ondersteunt Docker en CRI-O als container runtime. Pharos is een van de weinige Kubernetes distributies met ingebouwde hardening conform de aanbevelingen in de NIST Container Security Guidelines van eind 2017 (https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-190.pdf), meestal wordt dergelijke hardening bereikt via aparte container securityplatformen als Twistlock of Aqua. Dat is meteen een van de belangrijkste onderscheidende factoren van het product. Kontena heeft overigens een uitgebreide, goed ontworpen grafische interface die alleen in de cloud beschikbaar is. Er is helaas (nog) geen webgebaseerde managementinterface beschikbaar voor Pharos.

Github https://github.com/kontena/pharos-cluster