Die App braucht verwaltete Replikate? Namespace erstellen und Anwendung bereitstellen
Du möchtest drei Kopien deiner Webanwendung betreiben, ohne beim Verlust eines Pods selbst einen Ersatz starten zu müssen. Ein Kubernetes-Deployment beschreibt diesen gewünschten Zustand. Es verwaltet ein ReplicaSet, das die angegebene Anzahl von Pods aufrechterhält.
In diesem Lab läuft pro Pod ein NGINX-Container. Drei Replikate bedeuten somit drei Pods mit derselben Anwendung. Sie nutzen die vorhandenen Nodes des Clusters; drei Pods benötigen keine drei VMs. Kubernetes bestimmt die Platzierung. Mehrere Replikate können auf demselben Node laufen.
Ein Namespace gruppiert Ressourcen innerhalb des Clusters. Wir verwenden ct-apps, um die Anwendungsressourcen von der Infrastruktur in kube-system zu trennen. Ein Namespace ist keine Azure-Ressourcengruppe und blockiert für sich genommen keinen Netzwerkverkehr zwischen Anwendungen.
Verwende aks-ctlab-weu in UK West und deinen Zugriff als Azure Kubernetes Service RBAC Cluster Admin aus dem Cluster-Trip. Starte den Cluster bei Bedarf über Overview. Für die laufenden Nodes fallen weiterhin Kosten an.
Wir verwenden das öffentliche Image nginx:stable-alpine. Diese Übung benötigt daher weder Registry-Zugangsdaten noch eine ACR-Integration. AKS lädt das Image direkt; deine lokalen Docker-Images sind daran nicht beteiligt.
Namespace im Portal erstellen
Öffne Kubernetes services → aks-ctlab-weu → Kubernetes resources → Namespaces.
Öffne den YAML-Editor über Create → Apply a YAML. Falls diese Option unter Namespaces fehlt, öffne stattdessen Kubernetes resources → Services and ingresses → Create → Apply a YAML. Der Editor kann unterschiedliche Kubernetes-Ressourcentypen anlegen; das Feld kind bestimmt den Typ.
Füge dieses Manifest ein und wähle Add oder Apply, je nach Anzeige im Portal:
apiVersion: v1
kind: Namespace
metadata:
name: ct-apps
Ein Manifest beschreibt die Ressource, die Kubernetes verwalten soll. Hier erstellt kind: Namespace einen Namespace namens ct-apps. Aktualisiere Namespaces und prüfe, ob er mit dem Status Active erscheint.

Drei Replikate bereitstellen
Öffne erneut Create → Apply a YAML im Portal. Ersetze den Inhalt des Editors durch dieses vollständige Manifest und wende es an:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ct-web
namespace: ct-apps
spec:
replicas: 3
selector:
matchLabels:
app: ct-web
template:
metadata:
labels:
app: ct-web
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: nginx
image: nginx:stable-alpine
ports:
- containerPort: 80
resources:
requests:
cpu: 100m
memory: 64Mi
limits:
cpu: 250m
memory: 128Mi
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 2
periodSeconds: 5
| Einstellung | Bedeutung in diesem Lab |
|---|---|
namespace: ct-apps |
Ordnet das Deployment und seine Pods unserem Anwendungs-Namespace zu |
replicas: 3 |
Fordert drei Pods an; dies ist ein fester Sollwert und keine automatische Skalierung nach Auslastung |
selector.matchLabels und template.metadata.labels |
Verbinden das Deployment mit Pods mit dem Label app: ct-web; diese Werte müssen übereinstimmen |
template |
Beschreibt die zu erstellenden Pods einschließlich ihres Container-Images |
requests |
Reserviert Kapazität für die Planung pro Container: 100m entspricht 0,1 CPU-Kern und 64Mi entspricht 64 Mebibyte Arbeitsspeicher |
limits |
Begrenzt jeden Container auf 0,25 CPU-Kern und 128Mi Arbeitsspeicher; ein Überschreiten des Speicherlimits kann zur Beendigung führen |
readinessProbe |
Prüft HTTP / auf Port 80, damit Kubernetes den Container bei einer erfolgreichen NGINX-Antwort als bereit markieren kann |
containerPort: 80 dokumentiert den Port, auf dem die Anwendung lauscht. Dadurch entsteht kein öffentlicher Endpunkt. Dieser Trip prüft die laufenden Replikate; für den Zugriff auf die Anwendung brauchst du einen Service oder eine andere Zugriffsmethode.
Deployment und Pods prüfen
Öffne Kubernetes resources → Workloads → Deployments. Setze den Namespace-Filter auf ct-apps, aktualisiere die Ansicht und öffne ct-web. Warte, bis Images geladen und Container gestartet sind. Prüfe, ob die gewünschte Anzahl 3 beträgt und die Anzahl bereiter beziehungsweise verfügbarer Replikate 3 erreicht.
Verwende unter Workloads → Replica sets denselben Namespace-Filter. Dort sollte ein ReplicaSet erscheinen, dessen Name mit ct-web- beginnt. Die Verwaltungskette lautet Deployment → ReplicaSet → Pods.
Öffne Workloads → Pods, filtere nach ct-apps und prüfe die drei ct-web-…-Pods. Ihre automatisch erzeugten Namensendungen unterscheiden sich. Jeder Pod sollte Running und Ready 1/1 anzeigen: ein bereiter Container von einem Container in diesem Pod. Running allein bestätigt noch keine erfolgreiche Bereitschaftsprüfung.

Öffne einen Pod und prüfe seine Details oder sein YAML:
- Image:
nginx:stable-alpine. - Node: die Worker-VM, auf der dieser Pod läuft.
- Pod IP: eine interne Adresse, kein öffentlicher Browser-Endpunkt.
- Owner / ownerReferences: das ReplicaSet, das diesen Pod verwaltet.
- Events: Ereignisse zu Platzierung, Image-Download und Containerstart.
Öffne die Logs-Ansicht des Pods und wähle bei Bedarf den Container nginx aus. Hier können Startmeldungen und Anfragen der Readiness-Probe erscheinen. Logs zeigen die Ausgabe der Anwendung; Events beschreiben, was Kubernetes mit dem Pod gemacht hat.
Beobachten, wie Kubernetes einen Pod ersetzt
Notiere unter Workloads → Pods mit ausgewähltem Namespace ct-apps den Namen eines ct-web-…-Pods. Wähle nur diesen Pod aus, klicke auf Delete und bestätige. Lasse Deployment und ReplicaSet bestehen.
Aktualisiere die Liste. Das ReplicaSet hat weiterhin einen Sollwert von drei Replikaten. Deshalb erstellt Kubernetes einen Ersatz-Pod mit einem neuen Namen. Kurzzeitig kann der alte Pod noch beendet werden, während der neue auf seinen Start wartet. Warte, bis wieder drei Pods bereit sind.

Vergleiche Namen und Alter mit dem gelöschten Pod. Es handelt sich um einen neuen Pod, nicht um einen Neustart des ursprünglichen Pods. Sein Restart-Zähler kann deshalb null sein. Der Ersatz kann auf demselben oder einem anderen Node laufen.
Die Kernidee: Du legst die gewünschte Anzahl von Replikaten im Deployment fest; Kubernetes hält die passenden Pods bereit. Dafür braucht es freie Clusterkapazität und Zugriff auf das Image. Replikate synchronisieren nicht automatisch Anwendungsdaten und bewahren keine Dateien aus einem gelöschten Container auf.
Lab behalten oder aufräumen
Behalte ct-apps und ct-web für weitere Kubernetes-Übungen. Pausiere den Cluster zwischen Sitzungen über aks-ctlab-weu → Overview → Stop. Für verbleibende Datenträger und andere Ressourcen können weiterhin Kosten anfallen.
Um nur dieses Lab zu entfernen, öffne Kubernetes resources → Namespaces, wähle ct-apps und anschließend Delete. Dadurch werden der Namespace und alle enthaltenen Ressourcen gelöscht, einschließlich Deployment, ReplicaSet und Pods. Das Löschen einzelner Pods allein verhindert nicht, dass dieses Deployment sie ersetzt.
Der AKS-Cluster und seine Worker-VMs bleiben nach dem Löschen des Namespace bestehen. Lösche die Ressourcengruppe des Clusters im Portal erst, wenn du den Cluster nicht mehr benötigst.