Zum Inhalt

Lab 05: ReplicaSet

Dieses Beispiel illustriert, welche Rolle ReplicaSets bei Kubernetes spielen. Die Ressource, die wir uns anschauen, ist in manifest.yaml definiert. Bitte auch hier wieder daran denken, mit PowerShell in das korrekte Verzeichnis zu wechseln.

manifest.yaml:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: replicaset-demo
  template:
    metadata:
      labels:
        app: replicaset-demo
    spec:
      topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: kubernetes.io/hostname
          whenUnsatisfiable: ScheduleAnyway
          labelSelector:
            matchLabels:
              app: deployment-recreate-demo
      containers:
        - name: nginx
          image: nginx:1.29.4
          ports:
            - containerPort: 80
          readinessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 10
            periodSeconds: 20
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "200m"
              memory: "256Mi"

Führe die folgenden Schritte durch, um die Demo zu starten:

Erstelle das ReplicaSet mit dem Manifest:

kubectl apply -f manifest.yaml

Das Manifest enthält ein ReplicaSet von drei NGINX-Pods. Stelle sicher, dass alle Pods korrekt erstellt wurden:

kubectl get pods --selector=app=replicaset-demo

Dieser Befehlt funktioniert so, wie er ist, weil alle Pods das Label app=replicaset-demo tragen. Wenn du dir nicht sicher bist, warum das so ist, schau noch einmal in das Manifest. Dort wirst du das Label im Template finden.

Lösche nun einen Pod:

kubectl delete pod <POD_NAME>

Prüfe die Podliste erneut.

kubectl get pods --selector=app=replicaset-demo

Das ReplicaSet sollte nun wieder einen dritten Pod angelegt haben. Falls nicht, musst du vielleicht ein paar Sekunden warten.

Aufräumen

kubectl delete replicaset.apps/replicaset-demo

Bonus