Dennis Hemeier
Dennis Hemeier
June 17, 2019

Kubernetes 1.16 veröffentlicht

Kubernetes
Der Release von Kubernetes 1.16 bringt viele Verbesserungen mit sich. Beim Update sind allerdings einige Dinge zu beachten, um keine Probleme zu bekommen. Was genau erfahrt hier in diesem Artikel.
Kubernetes 1.16 Release

Die Veröffentlichung von Kubernetes 1.16 ist nach Version 1.14 und Version 1.15 nun der dritte Release in diesem Jahr. Dieser besteht aus insgesamt 31 Verbesserungen / Features. Nachfolgend möchte ich euch ein paar wichtige Änderungen einmal Vorstellen:

Custom Resources - Stable

In diesem Release wurde ein großer Fokus auf Custom-Resource-Definitions gelegt. Für diejenigen unter euch, die sich damit bisher nicht Beschäftigt haben einmal kurz ein paar Worte zu Custom Resources: Über sogenannte CRDs können Entwickler die bestehende Kubernetes API um eigene API-Objekte erweitern und so neue Funktionen innerhalb von Kubernetes implementieren, ohne das am "Core" von Kubernetes etwas angepasst werden muss. Beipiel: Um TLS-Zertifikate zu verwenden, ist in vielen Kubernetes Installationen der cert-manager installiert. Dieser ermöglicht das automatische Ausstellen von z.B. Let´s Encrypt Zertifikaten. In diesem Fall sind Zertifikate eine Custom-Resource-Definition, die sich nahtlos in die Kubernetes API einbinden. Um sich alle Zertifikate anzeigen zu lassen, genügt ein einfaches kubectl get certificates. Mit 1.16 sind diese CRDs nun offiziell Stable.

Windows Node Support

Mit 1.16 sind viele Funktionen angepasst worden, sodass nun auch Windows basierte Nodes innerhalb eines Kubernetes Clusters verwendet werden können.

Volume Extension / Volume Management

Das Container Storage Interface / CSI wurde um Funktionen zum Management von Persistent Storage erweitert. Die wichtigsten Änderungen sind die Möglichkeit, Persistente Volumes von bestehenden Volumes zu erstellen (Kopieren von Volumes) sowie das Resizing von Volumes zur Laufzeit.

Ephemeral Containers - Alpha

Bisher gestaltete sich das debuggen von Fehler innerhalb eines Pods als kompliziert. Meist laufen Anwendungen mit Alpine-Based-Containern und haben demnach keine Debugging Tools installiert. Mit sogenannten Ephermal Containern kann zur Laufzeit eines Pods ein weiterer Container innerhalb des Pods gestartet werden, welcher sich die gleichen Resourcen (Filesystem, Namespace, Networking, etc.) mit dem Original Container teilt. Mit diesem kann dann die Anwendung debuggt werden. Eine genaue Anleitung, wie dieses Alpha Feature verwendet werden kann, (aktuell leider noch etwas kompliziert) findet sich in der offiziellen Dokumentation über Ephermal Container.

IPv4 / IPv6 Dual Stack - Alpha

Ab sofort können Kubernetes Cluster mit Dual Stack Networking betrieben werden, sodass alle Systeme IPv4 und IPv6 IP-Adressen erhalten.

Vorsicht beim Update: Wegfall von diversen API Endpoints

Mit 1.16 sind viele veraltete API Endpoints entfernt worden. Dieses sollte vor einem Update des Clusters beachtet werden, sodass es zu keinen bösen Überraschungen kommt. Idealerweise sollte man einmal alle seine Manifest-Dateien prüfen und bei Bedarf entsprechend anpassen.

  • DaemonSet, Deployment, StatefulSet, and ReplicaSet (ehemals extensions/v1beta1 bzw. apps/v1beta2)
    -> Diese Resourcen sind nur noch unter der apps/v1 API nutzbar 

  • NetworkPolicy (ehemals extensions/v1beta1) -> networking.k8s.io/v1

  • PodSecurityPolicy (ehemals extensions/v1beta1) -> policy/v1beta1 

  • Ingress (ehemals extensions/v1beta1) -> ab Kubernetes v1.20 nur noch über networking.k8s.io/v1beta1 nutzbar

Weitere Informationen dazu findet ihr in diesem Kubernetes Blogartikel sowie in einem sehr ausführlichen Video der TGIK-Reihe auf YouTube: TGI Kubernetes 084: Kubernetes API removal and you.

Wer alle Details zu der neuen Version Wissen möchte, sollte sich die Realease Notes, den offiziellen Blogbeitrag und einen sehr ausführlichen Blogbeitrag von SysDig anschauen.