Azure Kubernetes Service (AKS)

03.07.2023

Da Kubernetes immer schneller der neue Standard für das Deployen und Betreiben von Software in der Cloud wird, bietet auch Microsoft in der Azure Cloud einen gemangten Service.

Was ist Azure Kubernetes Service (AKS)

Mit Azure Kubernetes Service (AKS) bietet Microsoft eine voll gemangte Kubernetes Container Infrastruktur für die Verwaltung und Skalierung von Containern. Der Service basiert auf dem bekannten Open Source Container Containerorchestrierungssystem Kubernetes (K8s). Wie bei vielen anderen Services auf Azure nimmt Microsoft den Infrastrukturteil ab und bietet ein vollumfänglichen Kubernetes Cluster innerhalb der Cloud an.

Die Kernfeatures hierbei sind

  • Voll verwalteter und gemanagter Kubernetes Kluster mit Monitoring und Zugriffssteuerung
  • automatisiertes Scaling für containerisierte Anwendungen
  • keine Aufwände für die Infrastrukturkonfiguration
  • Pay-per-Use und Abobezahlmodelle

Begriffserklärungen

Name Beschreibung
Availability zones Über die verschiedenen Zonen lassen sich Applikationen und Daten über mehrere Datencenter verteilen. Um Resilienz sicherzustellen, gibt es in jeder Azure Region mindestens 2 Availability Zones.
Scale method Es kann zwischen manueller und automatischer Scalierung unterschieden werden. Bei der manuellen Scalierung müssen die Knoten entsprechend angegeben werden. Mit automatischer Skalierung werden Knotenpunkte bei Bedarf auch automatisch nachgezogen. Weiterführende Informationen können hier gefunden werden.

Autoscaler
https://learn.microsoft.com/de-de/azure/aks/cluster-autoscaler
Node pool Knoten derselben Konfiguration werden in sogenannten Node pools zusammengefasst. Diese Knotenpools erhalten die zugrundeliegenden virtuellen Computer.

update node pool
doubleslash

Eine Einschränkung, welche sich auf Azure ergibt: Es können nur Node pools mit in der aktuell ausgewählten Region verfügbaren VM Typen erstellt werden. Außerdem kann die VM-Größe nach dem Erstellen nicht mehr geändert werden.

Node size Nodes sind die zugrundeliegende Einheit für Hardware in Kubernetes. Vereinfacht gesagt spiegelt jeder Node eine physikalische Maschine mit z. B. CPU und RAM Ressourcen im Datencenter wider. Dies bedeutet auch, dass die einzelnen Maschinen mit individuellen Größen angelegt werden können. So können sämtliche Azure VM Typen und Größen genutzt werden. Als Standard wird Standard_DS2_v2 mit 7 GiB verwendet.
Automatic upgrade Mit diesem Parameter kann angegeben werden, ob die zugrunde liegende Kubernetes Version automatisch geupdated wird oder nicht. AKS bietet die Möglichkeit dedizierte Kubernetes Versionen zu verwenden oder Updates nach dem Mechanismus none, stable, patch, rapid oder node-image auszuführen.

Preismodell

Wie bei den meisten Services bietet Azure auch für das Kubernetes Cluster einen Free-Tarif zum Einstieg. Die Klusterverwaltung ist hier kostenlos und nur für die Knoten fallen nutzungsabhängige Kosten an. Als Knotenlimit gilt hier 1000.

Beispielrechnung: Wird ein Kluster mit einer VM vom Typ DS2_v2 mit 8 GB Ram kostet diese 0,112 € pro Stunde. In einem 24/7 Betrieb kommen hier im Monat ca. 80 € pro VM zusammen.

Daneben kann auch ein Standard-Tier für 0,094 € pro Stunde gewählt werden. Hier werden entsprechende SLAs und Betriebszeiten garantiert und das Klusterlimit liegt bei 5000 Knoten. Wie bei allen Azure Services kann bei Buchung über einen längeren Zeitraum im voraus (1 Jahr oder 3 Jahre) eine Preisersparnis erzielt werden. Auch ist es möglich, eine sogenannte Kostenersparnis durch Spot-Buchung möglich. Dies kann für nicht zeitkritische Aufgaben wie zum Beispiel Batchverarbeitung oder Machine Learning verwendet werden, welche eine temporäre Unterbrechung tolerieren können.

How to use

Wie jeder Azure Service kann AKS über die Oberfläche konfiguriert und über die gängigen Infrastructure-as-Code (IaC) Mechanismen aufgesetzt werden.

Beispiel UI

Wichtigste Parameter, welche beim Erstellen eines AKS benötigt werden, sind das „Pricing Tier“ sowie die „Scale Method“.

doubleslash

Beispiel Terraform

resource „azurerm_kubernetes_cluster“ „default“ {
  name                = "${random_pet.prefix.id}-aks"
  location            = azurerm_resource_group.default.location
  resource_group_name = azurerm_resource_group.default.name
  dns_prefix          = "${random_pet.prefix.id}-k8s"
 
  default_node_pool {
    name            = "default"
    node_count      = 2
    vm_size         = "Standard_B2s"
    os_disk_size_gb = 30
  }
 
  service_principal {
    client_id     = var.appId
    client_secret = var.password
  }
 
  role_based_access_control_enabled = true
 
  tags = {
    environment = "Demo"
  }
}

Quelle: https://developer.hashicorp.com/terraform/tutorials/kubernetes/aks 

Beispiel Azure CLI 

# Create a resource group in west europe
az group create --name myAKSResourceGroup --location westeurope
 
# Create a basic single-node pool AKS cluster
az aks create \
    --resource-group myAKSResourceGroup \
    --name AKS-example-ANU \
    --vm-set-type VirtualMachineScaleSets \
    --node-count 2 \
    --generate-ssh-keys \
    --load-balancer-sku standard  
 
 
# Get the cluster credentials for use with kubectl
az aks get-credentials --resource-group myAKSResourceGroup --name AKS-example-ANU

Nachdem der Kubernetes Cluster aufgesetzt und verfügbar ist, kann über die Credentials regulär das bekannte kubectl command verwendet werden.

 

kubectl

Best practice

  • Wie auch bei On-Premise Kubernetes Cluster bietet sich auch auf Azure an, für jede Aufgabenstellung einen dedizierten Node Pool mit passender zugrundeliegender VM (SKU) zu nutzen.
  • Sollte ein Node pool nicht mit passender VM Größe konfiguriert sein, diesen löschen und neu aufsetzen.
  • Die Auslastung der VMs ebenfalls beobachten.
  • Alle Node pools müssen im selben virtuellen Netzwerk (und im besten Fall) in der gleichen Region betrieben werden.
  • Als hilfreich hat sich auch die Arbeit mit kubectl und das Pflegen von Skripten und Konfigurationen in helm herausgestellt.

 


Quellen: 

https://azure.microsoft.com/de-de/products/kubernetes-service

https://learn.microsoft.com/en-us/azure/aks/availability-zones 

https://azure.microsoft.com/de-de/pricing/details/kubernetes-service/ 

https://medium.com/google-cloud/kubernetes-101-pods-nodes-containers-and-clusters-c1509e409e16 

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*