Bewährte Verfahren; Einrichtung von Azure Kubernetes-Clustern

Kubernetes ist „hot & happening“, fast jedes Unternehmen nutzt bereits Kubernetes oder möchte es nutzen. Das Erstellen eines AKS-Clusters scheint einfach genug zu sein, aber was ist, wenn Sie einen AKS-Cluster für ernsthafte Produktionslasten erstellen möchten? In diesem Artikel geben wir Ihnen einige Hinweise und Best-Practices, die Ihnen helfen, einen AKS-Cluster produktionsfähig zu machen.

Bevor Sie beginnen

Das Erstellen eines AKS-Clusters ist einfach und es gibt mehr als genug Anleitungen, die Sie durch den Prozess führen. Wir von Intercept schätzen besonders die offiziellen Handbücher von Microsoft unter https://docs.microsoft.com/de-de/azure/aks/ , weil sie vollständig und immer aktuell sind. Bevor Sie mit der Erstellung Ihres Clusters beginnen können, müssen Sie jedoch einige wichtige Entscheidungen treffen.

 

1. VM-Typ

Wählen Sie die richtige VM-Größe für Ihren Kubernetes-Cluster. Kubernetes selbst besteht aus vielen ‚Pods‘, die ebenfalls Speicher und CPU benötigen. Dieser Overhead ist bei kleinen VMs (virtual machines) recht beträchtlich, bis zu 65% Overhead bei den kleinsten VMs mit 2 GB Speicher. Bei 64 GB Speicher wird der Overhead auf nur 10 % reduziert. Mein Rat wäre daher, die kleinen VMs zu überspringen und eine größere VM-Größe zu wählen, wenn möglich.

Glücklicherweise ist es nun möglich, die VM-Größe des AKS-Clusters zu ändern, was vorher nicht möglich war. Sie können Ihren AKS-Cluster nicht nur nach der Anzahl der VMs, sondern auch nach der Größe der VMs erweitern. Auf diese Weise können Sie den Overhead-Aufwand reduzieren. Ein zusätzlicher Vorteil größerer VMs ist der erhöhte IOPS-Wert und die Anzahl der Festplatten, während kleine VMs wenig und langsamen Festplattenzugriff haben.

Weitere Informationen zur VM-Größe und zum Overhead finden Sie unter folgendem Link

2. Das Netzwerkmodell

Ein AKS-Cluster kann eines von zwei Netzwerkmodellen verwenden, Basic und Advanced Networking. Sie können das Netzwerkmodell nicht mehr ändern, nachdem Sie einen AKS-Cluster erstellt haben. Das Modell Basic Network ist, wie der Name schon sagt, von den Funktionen her einfach. Sie können den AKS-Cluster nicht mit einer VPN-Verbindung oder anderen virtuellen Netzwerken innerhalb von Azure verbinden. Dies und mehr ist mit dem erweiterten Netzwerkmodell möglich, allerdings sollten Sie sicherstellen, dass Sie genügend IP-Adressen zur Verfügung haben. Das erweiterte Netzwerkmodell verwendet viel mehr IP-Adressen als das einfache Netzwerkmodell. Unter dem folgenden Link finden Sie weitere Informationen über die beiden Netzmodelle: https://docs.microsoft.com/de-de/azure/aks/concepts-network

 

3. Netzwerkgröße und Pods pro Knoten (node)

Eine weitere Einstellung, die Sie beim Einsatz eines AKS-Clusters vornehmen sollten, ist die Anzahl der Pods pro Node. Wenn Sie das Advanced-Netzwerkmodell verwenden (was Sie wahrscheinlich tun sollten), legt Azure eine Standardgrenze von 110 Pods je Node fest. Azure reserviert im Voraus eine IP-Adresse je Pod und VM. Das bedeutet, dass eine Standard-VM im AKS 110 IP-Adressen verwendet. Bei der Aktualisierung eines AKS-Clusters fügt Azure nach und nach eine neue VM hinzu und entfernt dann eine alte VM.

Ein /24-Netzwerk besteht aus 256 IP-Adressen, so dass es nur zwei VMs geben kann, aber Sie brauchen Platz für eine zusätzliche VM, um den Cluster zu aktualisieren. Ein /24-Netzwerk ist also auf eine einzige VM beschränkt.

Wählen Sie immer ein größeres Netzwerk für einen AKS-Cluster. Ein /23 Netzwerk hat 500 IP-Adressen, also genug für 3 VMs, ein /22 Netzwerk hat 1000 IP-Adressen, also genug für 8 VMs.

 

4. Kubernetes RBAC mit Azure AD

Azure verwendet das RBAC-Modell, d.h. jeder Azure AD-Benutzer hat eine oder mehrere Rollen und erhält die durch diese Rollen gewährten Zugriffsrechte. RBAC findet innerhalb eines AKS-Clusters keine Anwendung, alle Benutzer mit Zugriff auf den AKS-Cluster teilen sich die gleiche ‚Admin‘-Rolle und erhalten vollen Admin-Zugriff. Das ist natürlich nicht das, was Sie in einer Produktionsumgebung wollen. Verbinden Sie daher Ihren AKS-Cluster mit Azure AD, damit das RBAC-Modell auch innerhalb Ihres AKS-Clusters funktioniert. Jetzt können Sie benutzerdefinierte Rollen erstellen und diese Rollen Ihren Azure AD-Benutzern zuweisen. Die AKS-Rollen können für den gesamten AKS-Cluster oder für einzelne Namensräume vergeben werden. Auch dies ist eine Funktion, die Sie bei der Erstellung eines AKS-Clusters aktivieren müssen, Sie können diese Funktion nicht zu einem bestehenden AKS-Cluster hinzufügen. Für weitere Informationen siehe Link.

Die vier oben genannten Optionen sind wichtig, wenn Sie einen AKS-Cluster in Betrieb nehmen. Sie werden bei der Einrichtung eines AKS-Clusters schnell übersehen und können nach der Einrichtung nicht mehr hinzugefügt werden. Aber genau wie der Rest von Azure werden auch für AKS fast täglich neue Funktionen veröffentlicht. Informieren Sie sich über die neuesten Best-Practices und verfügbaren Funktionen, bevor Sie einen AKS-Cluster erstellen. Dies ist besonders wichtig, weil viele Funktionen nicht zu einem bestehenden AKS-Cluster hinzugefügt werden können, sondern erst zum Zeitpunkt der Bereitstellung. Die Liste aller AKS-Best-Practices finden Sie hier.

 

Überwachung, wissen was passiert

Wie bei jedem anderen Dienst ist auch hier die Überwachung wichtig. Durch die Anbindung Ihres AKS-Clusters an Log Analytics sind alle Protokolle und Metriken im Azure-Portal visuell verfügbar. Außerdem können Sie mit Log Analytics Warnmeldungen erstellen, die anzeigen, wenn bestimmte Ereignisse eintreten oder Grenzwerte erreicht werden. Log Analytics ist kostenlos, Sie zahlen nur für die Speicherung. Weitere Informationen zu Log Analytics und AKS finden Sie hier: link

Überwachungs-Dashboards - jeder mag sie:

 

Nicht IaaS, nicht PaaS, sondern KaaS

Ein AKS-Cluster besteht aus einem IaaS- und einem PaaS-Teil, ich nenne es KaaS (Käse auf Niederländisch: 🧀 ). Microsoft ist für den Kubernetes-Cluster verantwortlich (der PaaS-Teil) und Sie sind für die zugrunde liegenden VMs verantwortlich (der IaaS-Teil). Microsoft installiert Updates auf den VMs, aber der Neustart und die Aktivierung dieser Updates liegen in Ihrer Verantwortung. Zum Glück gibt es eine einfache Lösung: Kured. Wenn Sie Kured in Ihrem AKS-Cluster einsetzen, wird Kured Ihre Knoten bei Bedarf neu planen und neu starten. Kured startet Ihre Knoten nacheinander neu, d.h. wenn Ihr Cluster aus 3 oder mehr Knoten besteht, wird Ihre Anwendung keine Ausfallzeiten haben. Kured ist einfach zu implementieren, lesen Sie mehr über Kured unter dem folgenden Link: Verarbeiten der Neustarts von Linux-Knoten mit kured - Azure Kubernetes Service | Microsoft Docs

Kured auf einen Blick:

Best Practices, Ressourcenlimits und Ressourcenanforderungen

Wenn Sie einen AKS-Cluster für Produktions-Workloads einsetzen, ist es noch wichtiger, dass sich die Workloads nicht gegenseitig beeinträchtigen. Wie kann man verhindern, dass eine Anwendung alle Ressourcen verbraucht und andere Anwendungen nicht mehr funktionieren? Durch die Verwendung von Quoten und Ressourcenlimits.

Ein Administrator kann Quoten für die CPU, den Speicher und die Anzahl der Pods auf Namemsräumen anwenden. Ein Entwickler kann CPU und Speicher auf einzelne Pods beschränken. Wenn diese Quoten und Begrenzungen korrekt festgelegt sind, ist es daher für eine einzelne Anwendung unmöglich, den Cluster zu überlasten.

Mit Resource Requests (Ressourcenanforderungen) kann ein Entwickler die minimalen Ressourcen (CPU und Speicher) angeben, die für die Ausführung eines Pods erforderlich sind. Kubernetes sorgt dafür, dass diese Ressourcen für die Pods immer verfügbar sind. Dies hilft Kubernetes, die Pods den richtigen Nodes zuzuweisen und die Last gleichmäßiger zu verteilen. Es wird nie einen Node geben, dem keine Pods zugewiesen sind, während andere Nodes voll ausgelastet sind.

Hier finden Sie die Microsoft-Dokumentation über Quoten, Ressourcenanforderungen und Limits:

Vergessen Sie auch nicht, die Gesundheitssonden hinzuzufügen. Diese Health Probes (Gesundheitssonden) sind für Kubernetes von entscheidender Bedeutung, um festzustellen, ob ein Pod bereit und noch gesund ist. Health Probes helfen Kubernetes, abgestürzte Pods neu zu starten oder zu warten, bevor Traffic wieder an neu erstellte Pods gesendet wird.

Und nun...

Wenn Sie die oben genannten Tipps befolgt haben, verfügen Sie über einen ordnungsgemäßen AKS-Cluster für Produktionslasten (Workloads). Aber achten Sie darauf, was Microsoft mit AKS und Azure macht. AKS wird ständig weiterentwickelt und fast täglich kommen neue Funktionen hinzu. Super coole neue Funktionen wie Node-Autoskalierung, Node-Pools, Keyvault-Integration und vieles mehr sind in Kürze verfügbar. Microsoft engagiert sich voll für Kubernetes!

Zugehörige Artikel: